Флажок 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()

Выход:

Пример виджета флажка Tkinter

Как это работает.

  • Сначала создайте строковую переменную, которая будет содержать значение флажка:
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()
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *