3
在下面的Python應用程序中,我的主要基於Tkinter
的GUI窗口具有一些按鈕(這又調用了一些函數)和文本窗口小部件。文本小部件將通過按下按鈕調用的函數進行更新。將窗口小部件的引用傳遞給一個函數
我試着發送文本到函數,但我不能在順序順序中看到文本中的更新值。而是首先完成函數(或循環),然後在最後它將所有值一起更新。我想在執行相應的指令時逐個看到它們。
from Tkinter import *
import Tkinter as tk
from functools import partial
import time
class mainWindow:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.stat0 = tk.Text(self.frame,bg='cyan', font=("Helvetica", 10), width = 8, height = 1)
self.stat0.grid(row=2, column=0, sticky=W)
self.b0 = tk.Button(self.frame,bg='black',fg='white',text='LOAD',font=("Helvetica", 8),command=lambda:self.loadStatus(self.stat0))
self.b0.grid(row = 1, column = 0, sticky=W)
self.frame.grid()
def loadStatus(self,stat):
stat.insert(END,5)
time.sleep(1)
# stat.delete(1.0,END)
stat.insert(END,"hi")
# stat.delete(1.0,END)
time.sleep(1)
stat.insert(END,0)
if __name__ == '__main__':
#main()
root = tk.Tk()
app = mainWindow(root)
root.mainloop()
在這裏,按下按鈕load
,我可以看到的函數完成後,並插入的延遲之後一氣呵成(即順序分配)的所有值。
請按照執行的指令逐個更新文本條目。
這不是我想要的。以上只是一個虛擬代碼。我的應用程序實際上想要讀取函數內的循環變量的值並更新其文本小部件。所有這些都應該發生在單個函數調用中的不同循環迭代中。所以,根據我的代碼: 'def loadStatus(self,stat): stat.insert(END,5) time.sleep(1) stat.insert(END,「hi」) time.sleep(1 ) stat.insert(END,0)' 我希望看到這些值在按下按鈕時發生變化並穩定在0。在您的更改中,按一下按鈕將會一次又一次地調用func,這是不需要的。 –