- Python tkinter button size
- Обработка нажатия на кнопку
- Отключение кнопки
- Как изменить размер кнопки Tkinter
- Укажите опции height и width для установки размера кнопки
- Полные рабочие коды
- Установите width и height в пикселах кнопки Tkinter
- Измените размер кнопки после инициализации
- Полные примеры работы для изменения размера кнопки после инициализации
- Сопутствующая статья — Tkinter Button
Python tkinter button size
Одним из наиболее используемых компонентов в графических программах является кнопка. В tkinter кнопки представлены классом Button . Основные параметры виджета Button:
- command : функция, которая вызывается при нажатии на кнопку
- compund : устанавливает расположение картинки и текста относительно друг друга
- cursor : курсор указателя мыши при наведении на метку
- image : ссылка на изображение, которое отображается на метке
- pading : отступы от границ вилжета до его текста
- state : состояние кнопки
- text : устанавливает текст метки
- textvariable : устанавливает привязку к элементу StringVar
- underline : указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
- width : ширина виджета
Добавим в окно обычную кнопку из пакета ttk:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # стандартная кнопка btn = ttk.Button(text="Button") btn.pack() root.mainloop()
Для создания кнопки используется конструктор Button() . В этом конструкторе с помощью параметра text можно установить текст кнопки.
Чтобы разместить виджет в контейнере (главном окне), у него вызывается метод pack() . На ОС Windows мы получим следующую кнопку:
Конструктор Button определяет различные параметры, которые позволяют настроить поведение и внешний вид кнопки. Однако конкретный набор параметров зависит от того, используем ли мы кнопки из пакета tkinter или из пакета tkinter.ttk.
Обработка нажатия на кнопку
Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command , присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:
from tkinter import * from tkinter import ttk clicks = 0 def click_button(): global clicks clicks += 1 # изменяем текст на кнопке btn["text"] = f"Clicks " root = Tk() root.title("METANIT.COM") root.geometry("250x150") btn = ttk.Button(text="Click Me", command=click_button) btn.pack() root.mainloop()
Здесь в качестве обработчика нажатия устанавливается функция click_button. В этой функции изменяется глобальная переменная clicks, которая хранит число кликов. Кроме того, изменяем текст кнопки, чтобы визуально было видно сколько нажатий произведено. Таким образом, при каждом нажатии кнопки будет срабатывать функция click_button, и количество кликов будет увеличиваться:
Отключение кнопки
Для ttk-кнопки мы можем установить отключенное состояние с помощью метода state() , передав ему значение «disabled». С такой кнопкой пользователь не сможет взаимодействовать:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") btn = ttk.Button(text="Click Me", state=["disabled"]) btn.pack() root.mainloop()
При этом в метод state мы можем передать набор состояний, поэтому значение «disabled» передается внутри списка.
Как изменить размер кнопки Tkinter
- Укажите опции height и width для установки размера кнопки
- Установите width и height в пикселах кнопки Tkinter
- Измените размер кнопки после инициализации
Опции height и width виджета Tkinter Button задают размер создаваемой кнопки при инициализации. После инициализации все же можно было использовать метод configure для настройки опций height и width для программного изменения размера виджета Tkinter Button .
Укажите опции height и width для установки размера кнопки
tk.Button(self, text = "", height = 20, width = 20)
height и width устанавливаются в единице текстовых единиц равными 20 . Горизонтальный текстовый блок равен ширине символа 0 , а вертикальный текстовый блок равен высоте 0 , оба в системном шрифте по умолчанию.
Причина, по которой Tkinter использует текстовые единицы для измерения ширины и высоты, а не дюймов или пикселей, заключается в том, что текстовые единицы обеспечивают согласованное поведение Tkinter на разных платформах.
Полные рабочие коды
import tkinter as tk import tkinter.font as tkFont app = tk.Tk() app.geometry("400x200") buttonExample1 = tk.Button(app, text="Button 1", width=10, height=10) buttonExample2 = tk.Button(app, text="Button 2", width=10, height=10) buttonExample1.pack(side=tk.LEFT) buttonExample2.pack(side=tk.RIGHT) app.mainloop()
Как вы могли видеть, высота и ширина кнопки не совпадают в пикселях, хотя ее width и height установлены как 10 .
Установите width и height в пикселах кнопки Tkinter
Если нам нужно задать ширину и/или высоту виджета Tkinter Button в единице пикселей , то к Button можно добавить виртуальное невидимое изображение 1×1 пикселей. Тогда width и height будут измеряться в единицах пикселей .
tk.Button(app, text="Button 1", image=pixelVirtual, width=100, height=100, compound="c")
Нам также нужно установить опцию compound в c или в равной степени tk.CENTER , если невидимое изображение и текст должны быть отцентрированы в кнопке. Если compound не настроен, то текст не будет отображаться в кнопке.
import tkinter as tk import tkinter.font as tkFont app = tk.Tk() app.geometry("300x100") fontStyle = tkFont.Font(family="Lucida Grande", size=20) labelExample = tk.Label(app, text="20", font=fontStyle) pixelVirtual = tk.PhotoImage(width=1, height=1) buttonExample1 = tk.Button(app, text="Increase", image=pixelVirtual, width=100, height=100, compound="c") buttonExample2 = tk.Button(app, text="Decrease", image=pixelVirtual, width=100, height=100, compound="c") buttonExample1.pack(side=tk.LEFT) buttonExample2.pack(side=tk.RIGHT) app.mainloop()
Измените размер кнопки после инициализации
После создания виджета Button метод configure может установить опции width и/или height для изменения размера Button .
buttonExample1.configure(height = 100, width = 100)
Он устанавливает height и width buttonExample1 равными 100 .
Полные примеры работы для изменения размера кнопки после инициализации
import tkinter as tk import tkinter.font as tkFont app = tk.Tk() app.geometry("600x500") def decreaseSize(): buttonExample1.configure(height = 100, width = 100) def increaseSize(): buttonExample2.configure(height = 400, width = 400) pixelVirtual = tk.PhotoImage(width=1, height=1) buttonExample1 = tk.Button(app, text="Decrease Size", image=pixelVirtual, width=200, height=200, compound="c", command = decreaseSize) buttonExample2 = tk.Button(app, text="Increase Size", image=pixelVirtual, width=200, height=200, compound=tk.CENTER, command = increaseSize) buttonExample1.pack(side=tk.LEFT) buttonExample2.pack(side=tk.RIGHT) app.mainloop()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.