Флажок Tkinter в Python — как использовать
Что такое виджет флажка Tkinter?
Флажок (checkbox) — это виджет Tkinter в Python, позволяющий устанавливать и снимать отметки.
Флажок может содержать значение и вызывать обратный вызов, когда он отмечен или снят. Обычно флажок используется, когда вы хотите предложить пользователям выбрать между двумя значениями.
Для создания флажка используйте конструктор ttk.Checkbutton:
checkbox_var = tk.StringVar() def check_changed(): #... checkbox = ttk.Checkbutton(container, text='<checkbox label>', command=check_changed, variable=checkbox_var, onvalue='<value_when_checked>', offvalue='<value_when_unchecked>')
- Аргумент container указывает окно, в котором вы хотите разместить флажок.
- Аргумент text определяет метку для флажка.
- command является вызываемой и будет вызвана после установки или снятия флажка.
- variable содержит текущее значение флажка. Если флажок отмечен, значение переменной равно 1. В противном случае — 0.
Если вам нужны другие значения, нежели 0 и 1, вы можете указать их в параметрах onvalue и offvalue. Если связанная переменная не существует или ее значение не является ни значением «включено», ни значением «выключено», флажок находится в неопределенном или трехстабильном режиме.
Пример флажка Tkinter
Следующая программа иллюстрирует, как использовать виджет флажка. После того, как вы установите или снимите флажок, в окне сообщения будут показаны значения включения и выключения соответственно:
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showinfo root = tk.Tk() root.geometry('300x200') root.resizable(False, False) root.title('Checkbox Demo') agreement = tk.StringVar() def agreement_changed(): tk.messagebox.showinfo(title='Result', message=agreement.get()) ttk.Checkbutton(root, text='I agree', command=agreement_changed, variable=agreement, onvalue='agree', offvalue='disagree').pack() root.mainloop()
Выход:
Как это работает.
- Сначала создайте строковую переменную, которая будет содержать значение флажка:
agreement = tk.StringVar()
- Во-вторых, определите функцию, которая будет вызвана при изменении состояния флажка. Функция показывает значение флажка:
def agreement_changed(): tk.messagebox.showinfo(title='Result', message=agreement.get())
- В-третьих, создайте виджет-флажок и настройте его параметры соответствующим образом:
ttk.Checkbutton(root, text='I agree', command=agreement_changed, variable=agreement, onvalue='agree', offvalue='disagree').pack()