2013-12-13 86 views
0

我想寫一個使用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是所有更新發生的地方。

回答

0

我不是100%確定你在問什麼,所以我會回答我所能想到的所有可能性。

在用戶輸入用戶名和密碼後,只需撥打self.frame.after(0, self.showGUI)self.showGUI()即可,結束時爲printer。然後它將開始檢查每100ms,並且永不停止,這正是你想要的。

如果您不希望它需要按下按鈕,而是您可以觸發printer以在任何時候運行焦點離開用戶名或密碼字段,或每當任一內容發生更改等時;那麼你只需要檢查用戶名和密碼是否有效,如果是的話只能調用showGUI

如果您希望在程序運行之間存儲用戶名和密碼,則需要編寫這樣的代碼。例如,您可以將它們存儲在printer中,並將它們(如果存在)加載到同一類的__init__中。我假設你已經知道如何讀寫文件;如果沒有,請參閱the tutorial

+0

調用self.frame.after(0,self.showGUI)或self.showGUI()在打印機凍結我的程序 – user3064033

+0

@ user3064033:這聽起來像一個不同的問題。如果'showGUI'做了任何緩慢或阻塞的事情(比如'dhtreader.read(11,18)''),你不能在主線程中做到這一點而不會凍結GUI。無論你如何解決你原來的問題,你最終都會遇到新的問題。如果這是您的問題,請參閱[爲什麼您的GUI應用程序會凍結](http://stupidpythonideas.blogspot.com/2013/10/why-your-gui-app-freezes.html)以瞭解如何處理它。 – abarnert