我想寫一個使用tkinter的python程序,它將不斷地檢查新的Tkinter python的困境
電子郵件。我遇到的問題是,目前,該郵件被僅當用戶
點擊一個按鈕,因爲我不希望我的程序到用戶輸入正確的
的用戶名和密碼,然後運行更新。
我如何確保程序不檢查新郵件,如果用戶還沒有
輸入了正確的數據,但同時要不斷檢查是否有新郵件,一旦
用戶輸入的數據
下面是我的代碼的一部分:
def printer(self):
self.mail=StringVar()
self.username=self.userinput.get()
self.MailPass=self.password.get()
self.unread = int(feedparser.parse("https://" + self.username + ":" + self.MailPass +"@mail.google.com/gmail/feed/atom")["feed"]["fullcount"]) #gmail command
self.mail.set("Unread Emails:"+str(self.unread))
self.mail_label=Label(self.frame,textvariable=self.mail)
self.mail_label.grid(row=2,column=0,sticky=W)
return
def showGUI(self):
now=datetime.datetime.now()
dhtreader.init()
s = dhtreader.read(11,18)
if s == None:
s=(1,1)
self.temp.set("Temperature:"+str(s[0])+" C")
self.humidity.set("Humidity:"+str((s[1]))+"%")
current_time = str(now.hour)+':'+str(now.minute)+':'+str(now.second)
current_date=(str(now.month)+':'+str(now.day)+':'+str(now.year))
self.time1.set("Time:"+current_time)
self.date.set("Date:"+current_date)
self.frame.after(100,self.showGUI)
def main():
root=Tk()
app=GUI(master=root)
app.showGUI()
root.title('Controller GUI')
root.mainloop()
if __name__=='__main__':
main()
打印機是當按鈕被按下時執行的方法。 showGUI是所有更新發生的地方。
調用self.frame.after(0,self.showGUI)或self.showGUI()在打印機凍結我的程序 – user3064033
@ user3064033:這聽起來像一個不同的問題。如果'showGUI'做了任何緩慢或阻塞的事情(比如'dhtreader.read(11,18)''),你不能在主線程中做到這一點而不會凍結GUI。無論你如何解決你原來的問題,你最終都會遇到新的問題。如果這是您的問題,請參閱[爲什麼您的GUI應用程序會凍結](http://stupidpythonideas.blogspot.com/2013/10/why-your-gui-app-freezes.html)以瞭解如何處理它。 – abarnert