2012-07-05 3 views
0

"작업을 수행하는 동안 기다려주십시오"창이있는 프로그램을 작성하고 있습니다. 배치 파일을 실행하는 동안이 창을 열어 두어야합니다. 일괄 처리가 완료되면 창이 닫힙니다. 파이썬 메서드 .after()를 사용하여 창을 연 다음 배치 프로세스를 호출합니다. .after()에 설정된 시간이 지나면 창을 닫고 다시 열면 흰색으로 바뀌고 텍스트가 표시되지 않는 문제가 발생합니다. 다음은 관련 코드입니다.새로운 tkinter 창을 연 후에 외부 프로세스를 시작하십시오. [Python]

def backupCallBack(self, event): 
     self.backupCB = Toplevel() 
     self.backupCB.grab_set() 
     self.backupCB.transient(self.exportGUI) 

     message = "Please wait while the\ndatabase is backed up..." 
     Label(self.backupCB, text=message, padx=100, pady=20).pack() 

     event.after(200,self.runBackup) 

    def runBackup(self): 
     name = Entry.get(self.backupEntry) 

     self.backupWindow.destroy() 
     self.exportGUI.destroy() 

     os.system('.\\src\\backup.bat %s' % name) 

     self.backupCB.destroy() 

"기다려주십시오"창이 열리고 일괄 처리가 실행되는 동안 열어 두어야합니다. .after()를 잘못 사용하고 있습니까? 이 작업을 수행하는 더 적절한 방법은 무엇입니까? 당신의 도움을 주셔서 감사합니다!

답변

1

after 방법은 * self.runBackup* 200 후 MS을 실행하고 당신의 대기 창입니다 self.backupCB.destroy()이 포함되어 있습니다.
당신의 의도가 창 전에 시간의 X 금액을 대기중인 경우는 당신이 after 방법 위에 backupCallBackos.system('.\\src\\backup.bat %s' % name) 를 이동하는 것을 고려 (더 실질적인 뭔가에 200 밀리 초 변경) 할 수 , 파괴된다. 그렇지 않으면 다음과 같은 조건을 설정하는 방법을 알아야합니다. if batch == done,

관련 문제