Как мне узнать, нажал ли я контрольную кнопку?

#python-3.x #tkinter

#python-3.x #tkinter

Вопрос:

 from Tkinter import *
window = Tk()
window.config(background="green")
window.bind("<Escape>", quit)
cbttn = Checkbutton(text="Caps?").grid(row=3, column=0)
 

if cbttn = True Работает ли это? Или мне нужно переместить .grid() функцию и переместить ее на следующую строку кода.

Ответ №1:

Назначение, такое как:

 cbttn = Checkbutton(text="Caps?").grid(row=3, column=0)
 

возвращает в cbttn объект, не относящийся к типу None.

Либо удалите присвоение cbttn (если вы не хотите ссылаться на него дальше в скрипте).

 Checkbutton(text="Caps?").grid(row=3, column=0)
 

или переместите сетку на новую строку следующим образом:

 cbttn = Checkbutton(text="Caps?")
cbttn.grid(row=3, column=0)
 

И чтобы узнать, была ли нажата контрольная кнопка или нет, используйте доступный параметр command. Проверьте пример здесь. Взяв этот пример:

 from tkinter import *

def display():
    print(CheckVar1.get())

top = Tk()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
C1 = Checkbutton(top, text = "Music", variable = CheckVar1, 
                 onvalue = 1, offvalue = 0, height=5, 
                 width = 20, command = display)
C2 = Checkbutton(top, text = "Video", variable = CheckVar2, 
                 onvalue = 1, offvalue = 0, height=5, 
                 width = 20)
C1.pack()
C2.pack()
top.mainloop()
 

Выходной сигнал должен постоянно переключаться между 0 и 1

Комментарии:

1. Но как мне узнать, была ли она нажата или нет, если я хочу использовать ее в команде if, elif?

2. @PeterGalibaYear7 я отредактировал ответ. Вам не нужно использовать if..elif..else для контрольных кнопок. Надеюсь, это прояснит это

3. Теперь это имеет смысл

4. Обратная трассировка (последний последний вызов): Файл «/data/data/ru.iiec.pydroid3/files/coding folder/alphabet_draw0.1.0.py «, строка 39, в <модуле> текст=Метка (текст=cbttn.переменная) Ошибка атрибута: объект ‘Checkbutton’ не имеет атрибута ‘variable’