Что такое виджет флажка 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()
