Учебник Tkinter - Кнопка
Виджет кнопки Tkinter достаточно похож на виджет Tkinter Label. Он имеет почти те же опции, что и в метке, за исключением одной дополнительной опции по умолчанию
. Подробнее об этом default
мы расскажем после одного основного примера с кнопкой.
Ниже вы можете сгенерировать две простейшие кнопки, используя демонстрационные коды.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()
Окно с двумя кнопками, расположенными рядом друг с другом, показывается после того, как вы запустили коды.
Кнопка Tkinter default
опция
Опция по умолчанию
в кнопке говорит о том, что кнопка является кнопкой по умолчанию в GUI, например, кнопкой, которая вызывается автоматически при нажатии пользователем кнопки входа
или возврата
.
Команда обратного вызова кнопки по умолчанию не создаётся автоматически. Необходимо создать вручную.
Обратный вызов команды кнопки Tkinter Button
Опция команда
вызывает функцию обратного вызова при нажатии кнопки.
Состояние кнопки должно быть активным, когда включена опция “команда”, в противном случае обратный вызов не осуществляется.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
labelExample = tk.Button(app, text="0")
def change_label_number():
counter = int(str(labelExample['text']))
counter += 1
labelExample.config(text=str(counter))
buttonExample = tk.Button(app, text="Increase", width=30,
command=change_label_number)
buttonExample.pack()
labelExample.pack()
app.mainloop()
Она создает кнопку и виджет метки в главном окне. При каждом нажатии кнопки номер в тексте метки увеличивается на 1.
def change_label_number():
counter = int(str(labelExample['text']))
counter += 1
labelExample.config(text=str(counter))
Функция change_label_number
вызывается при нажатии на кнопку. Она получает номер метки, а затем устанавливает метку, увеличенную на единицу.
buttonExample = tk.Button(app, text="Increase", width=30,
command=change_label_number)
Она строит привязку между кнопкой и функцией обратного вызова.
Имя функции в опциях кнопки не заключено в круглые скобки.
Функция обратного вызова команд для кнопок с аргументами
Вам нужен объект partial
из functools, если вам нужно передать аргументы в функции обратного вызова. partial
объекты - это вызываемые объекты с позиционными аргументами args
и аргументами ключевых слов keywords
.
Ниже приведен фрагмент кода, демонстрирующий, как использовать эту partial
функцию в команде с кнопкой.
def change_label_number(num):
counter = int(str(labelExample['text']))
counter += num
labelExample.config(text=str(counter))
buttonExample = tk.Button(app, text="Increase", width=30,
command=partial(change_label_number, 2))