2013-12-13 50 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