Можно ли уменьшить размер кнопки в 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
и
pady
options также влияет на размер кнопки. Если вы пытаетесь получить точный размер, вам нужно установить его на ноль.
Вот простой пример:
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)