[英]tkinter read button state
我有一個按鈕,通常在按下該按鈕時可以打印一行數據-該部分工作正常。 如果另一個選項(復選框)處於打開狀態,則應連續打印數據,直到再次按下該按鈕為止。 因此,我將其標簽更改為“停止”,然后等待按鈕狀態從NORMAL變為ACTIVE。 但是,循環永遠不會執行。 以下是相關代碼:
self.read_button = Button(master, text='Read Data', command=read_data)
.
.
def read_data(self):
if self.continuous.get()==1:
self.read_button['text']='Stop'
self.read_button['command']=None
self.read_button.update_idletasks()
# The data is never printed.
while self.read_button['state']==NORMAL:
print_data()
self.read_button['text']='Read Data'
self.read_button['command']=read_data
else:
print_data()
謝謝你的幫助。 這看起來很簡單。
一般來說,Tkinter在while循環中表現不佳。 您的所有功能都需要及時結束,以便Tkinter可以完成其任務,例如重新繪制窗口並檢查用戶是否單擊/鍵入了任何內容。 如果輸入無限循環,則UI將凍結並停止響應用戶輸入。 如果需要連續執行某些操作,則應使用after
或after_idle
方法。
例:
from Tkinter import *
def print_data():
print "printing data..."
if read_button["text"] == "Stop":
#call this again in 10 milliseconds
root.after(10, print_data)
def read_button_clicked():
read_button.config(command=stop_button_clicked)
read_button.config(text="Stop")
print_data()
def stop_button_clicked():
read_button.config(command=read_button_clicked)
read_button.config(text="Read Data")
root = Tk()
read_button = Button(root, text="Read Data", command=read_button_clicked)
read_button.pack()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.