Я пытаюсь создать простую форму с помощью Tkinter, которая будет делать действие после нажатия кнопки. Как я могу «прослушать» нажатие кнопки?Пока цикл после tkraise?
Я создал метод обратного вызова, который будет изменять переменную статуса при нажатии кнопки, но не может понять, как вызвать действие в моем основном цикле после нажатия кнопки.
Я попытался использовать цикл while (после рисования кнопки), чтобы проверить значение переменной состояния, но когда я это делаю, цикл выполняется, но мои элементы GUI не отображаются на экране. (Если я использую цикл for, они появляются, но я не думаю, что это сработает для этого.)
Как мне «ждать» изменения состояния в моей переменной «status»? Или есть встроенный способ сделать это, что мне не хватает?
(Фактический код немного сложнее - аналогично подходу в ответе here (но без всех кнопок на одной странице) - но я думаю, что принцип все тот же (как слушать изменение в состоянии к одной из переменных объекта).)
from Tkinter import *
master = Tk()
def callback():
status = 0
print status
status = 1
myB = Button(text="Enter", command=callback)
myB.pack()
print status
# while True:
# if status == 0:
# print "button was clicked"
mainloop()
'MainLoop()' запустить программу и запустить до вы закроете программу. Вы не можете использовать 'while loop',' sleep' или другие длительные функции в Tkinter (или других GUI). – furas
@furas - спасибо. Есть ли другой способ «прослушать» изменение переменной? – user3092118
Вы можете использовать 'tkinter.IntVar' для создания специальной переменной объекта a, а затем использовать функцию' trace' для вызова, когда это значение объекта изменяется. – furas