Tkinter Tutorial - Чек-кнопка

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. Контрольная кнопка Tkinter Основной пример
  2. Кнопка Выбор/Выберите
  3. Tkinter Checkbutton State Toggle
  4. Привязка функции обратного вызова Tkinter Checkbutton
  5. Изменить Tkinter Checkbutton Значение по умолчанию
Tkinter Tutorial - Чек-кнопка

Виджет Checkbutton - это виджет со значением. Чековые кнопки могут содержать как текст, так и изображения. Он также может связать функцию обратного вызова, которая будет вызвана при нажатии на чек-кнопку.

Для создания виджета с чек-кнопками в существующем родительском окне используйте

tk.Checkbutton(parent, option, ...)

Контрольная кнопка Tkinter Основной пример

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)
 
app.mainloop()

Учебное пособие Tkinter Контрольная кнопка Основной пример

chkValue = tk.BooleanVar() 

Каждая контрольная кнопка должна быть связана с переменной. Тип данных переменной определяется с помощью контрольной кнопки при ее выборе/отключении.

chkValue.set(True)

При этом устанавливается исходное значение контрольной кнопки. Так как она просто присваивается к типу данных Boolean, то здесь у Вас есть только две опции, True или False.

chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 

Теперь экземпляр контрольной кнопки в конечном итоге создается с помощью переменной chkValue, которую мы сделали выше.

chkExample.grid(column=0, row=0)

grid - это другой тип управляющих элементов компоновки кинтера, кроме пакета, представленного в разделе Tkinter Label.

В Tkinter есть три менеджера верстки/геометрии,

  • пакет
  • сетка
  • место

Мы познакомим вас с менеджерами по верстке/геометрии в одном из разделов этого руководства.

Кнопка Выбор/Выберите

Пользователь может нажать кнопку с флажком в графическом интерфейсе, чтобы выбрать или отменить выбор. Вы также можете выбрать или снять выделение с кнопки, используя методы select() и deselect().

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.select()
print "The checkbutton value when deselected is {}".format(chkValue.get())
The checkbutton value when selected is True
The checkbutton value when deselected is False

Здесь значение контрольной кнопки получается методом get().

Tkinter Checkbutton State Toggle

Состояние кнопки проверки может быть изменено с помощью select() и deselect(), а также может быть переключено с помощью метода toggle().

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)


print "The checkbutton original value is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled twice is {}".format(chkValue.get())

app.mainloop()
The checkbutton original value is True
The checkbutton value after toggled is False
The checkbutton value after toggled twice is True

Привязка функции обратного вызова Tkinter Checkbutton

Виджет чек-кнопок используется для выбора состояний, а также может привязывать функцию обратного вызова к событию, когда оно выбрано/отключено, или более прямолинейно, переключено. Всякий раз, когда переключается состояние кнопки с флажком, включается функция обратного вызова.

import tkinter as tk
from _cffi_backend import callback
 
def callBackFunc():
    print "Oh. I'm clicked"
    
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', 
                            var=chkValue, command=callBackFunc) 
chkExample.grid(column=0, row=0)

app.mainloop()

Каждый раз, когда Вы нажимаете на контрольную кнопку, Вы можете видеть, что она печатает Oh. I'm clicked

Опция команда в классе Checkbutton предназначена для привязки функции или метода обратного вызова при нажатии кнопки.

Изменить Tkinter Checkbutton Значение по умолчанию

Значение по умолчанию, соответствующее невыбранной контрольной кнопке, равно 0, а значение по умолчанию для выбранной контрольной кнопки равно 1. Также можно изменить значения по умолчанию для контрольной кнопки и связанные с ней типы данных на другие значения и/или типы данных.

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.StringVar() 
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 
chkExample.grid(column=0, row=0)

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.deselect()
print "The checkbutton value when deselected is {}".format(chkValue.get())

app.mainloop()
The checkbutton value when selected is RGB
The checkbutton value when deselected is YCbCr
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 

onvalue и offvalue - это опции изменения значений выбранных и невыбранных состояний. Они могут иметь такие типы данных, как Int, String, Float или другие.

Внимание
Тип данных Tkinter, связанный с кнопкой проверки, должен совпадать с типом данных onvalue и offvalue. В противном случае он сообщает _tkinter.TclError.
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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.

LinkedIn