Можно ли уменьшить размер кнопки в tkinter?

Я работаю над небольшим текстовым редактором и в настоящее время делаю кнопки на картинке ниже кнопки «B» для жирного шрифта. Я бы хотел уменьшить его размер, чтобы он соответствовал своему истинному размеру, как квадратная коробка, и избавился от лишнего роста.

Как я могу уменьшить размер, который кажется минимальным по умолчанию? Высота кадра и кнопки установлена ​​на 1 и ожидается целое число, поэтому мне не разрешено опускаться ниже с чем-то вроде 0,5.

      top_menu = tk.Frame(root)
bold_button = tk.Button(top_menu, text='B', font=('EB Garamond ExtraBold',)) #here a tuple because tkinter needs it when the font name have multiple spaces
bold_button.pack(side='left', padx=4)

3 ответа

Решение

В width и height атрибуты указаны в единицах символов (например: 1означает размер одного среднего символа). Вы можете указать ширину и высоту в пикселях, если на кнопке есть изображение.

Кнопка может иметь как изображение, так и текст, поэтому простой трюк - добавить в качестве изображения однопиксельный прозрачный пиксель, который затем позволит вам указать размер в пикселях.

В padx и padyoptions также влияет на размер кнопки. Если вы пытаетесь получить точный размер, вам нужно установить его на ноль.

Вот простой пример:

      import tkinter as tk

root = tk.Tk()
root.geometry("200x100")

pixel = tk.PhotoImage(width=1, height=1)
toolbar = tk.Frame(root)
toolbar.pack(side="top")
for size in (12, 16, 24, 32):
    button = tk.Button(toolbar, text=str(size), width=size, height=size,
                       image=pixel, compound="center", padx=0, pady=0)
    button.pack(side="left")

root.mainloop()

Я думаю, вы могли бы попробовать использовать ttk.Button и дайте ему ttk.Style и установите размер шрифта:

      s = ttk.Style()
s.configure('my_button', font=('Helvetica', 12))
b = ttk.Button(..., style='my_button')

Настройка кнопки (или любого виджета) в Tkinter выполняется путем вызова метода настройки config.

Чтобы изменить размер кнопки с именем button1, вы просто вызываете

      button1.config( height = WHATEVER, width = WHATEVER2 )

Если вы знаете, какой размер вам нужен при инициализации, эти параметры можно добавить в конструктор.

      button1 = Button(self, text = "Send", command = self.response1, height = 100, width = 100) 
Другие вопросы по тегам