我正在尝试使用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 :(得分:0)
我不是100%肯定你在问什么,所以我会回答我能想到的所有可能性。
在用户输入用户名和密码后,只需在self.frame.after(0, self.showGUI)
结束时拨打self.showGUI()
或printer
即可。然后它将开始每100毫秒检查一次,永不停止,这正是你想要的。
如果您不希望按下按钮,则可以触发printer
任何时候焦点离开用户名或密码字段,或每次更改内容等时运行;然后你只需检查用户名和密码是否有效,如果是,则只调用showGUI
。
如果您希望在程序运行之间存储用户名和密码,则需要编写执行该操作的代码。例如,您可以将它们存储在printer
中,并将它们(如果存在)加载到同一个类的__init__
中。我假设你已经知道如何读写文件;如果没有,请参阅the tutorial。