2013-12-13 4 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 % 확신 할 수는 없으므로 내가 생각할 수있는 모든 가능성에 답할 것입니다.

사용자 이름과 비밀번호를 입력 한 후 printer의 끝에 self.frame.after(0, self.showGUI) 또는 self.showGUI()으로 전화하면됩니다. 그런 다음 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