2012-07-05 67 views
0

我正在开发一个程序,该程序有一个“正在执行操作时请稍候”窗口。当批处理文件运行时,此窗口需要保持打开状态。批处理完成后,窗口关闭。我正在使用Python方法.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方法运行MSself.runBackup后200 * *和包括self.backupCB.destroy()这是你的等待窗口。
如果你打算在等待的窗口前,时间x量被破坏, 你可能会考虑移动os.system('.\\src\\backup.bat %s' % name)backupCallBack上述after方法(和更改200毫秒的东西更大幅度)。 否则,您需要弄清楚如何设置相当于以下条件的条件: if batch == done,