from tkinter import *
from threading import Timer
.......
def getdata(dval):
global log,entryWidget,txtf,infile,lout
ff="c:\\downloads\test\logs\\log1.log"
flog=open(ff,encoding="utf-8")
infile= flog.read()
flog.close()
def getlog(sval):
global log,entryWidget,txtf,infile,lout
txtf.delete ('1.0','end')
inf =entryWidget.get().strip()
if inf == "scan":
gdata = getdata("")
txtf.insert (END,gdata)
else:
gdata=str(datetime.now())+"\n"
txtf.insert (END,gdata)
gdata=""
ev=Timer(60,getlog,[lout])
ev.start()
def runscan():
global log,entryWidget,txtf,infile,lout
root =Tk()
root.title("Scan log")t
textFrame = Frame(root)
txtf= Text(textFrame,width=60,height=18,font=("MS Sans Serif bold",8))
entryWidget = Entry(textFrame)
textFrame.grid(row=200,column=200)
textFrame.bind("<Button-1>", getlog(lout)
txtf.grid(row=0,column=1)
entryWidget["width"] = 30
entryWidget.bind('<Return>',getlog(10))
entryWidget.grid(row=25,column=1)
ev=Timer(60,getlog,[10])
ev.start()
root.mainloop()
if __name__ == "__main__":
runscan()
定時器的Tkinter定時器使用正常工作,每隔60秒,但 Entrywidget沒有。
如果我拿出計時器,Entrywidget工作正常。
因此,某處計時器線程會鎖定窗口小部件輸入。
似乎主循環中的定時器
需要重置功能,而不是getlog功能。與輸入小
感謝布萊恩將檢查出來 –
不工作entryWidget仍然掛起。 –
@MNewton:那麼,如果'getdata(「」)'可以阻塞,那麼是的,這會導致你的程序掛起。由於您沒有發佈'getdata'的代碼,因此無法確定。 –