0

我正在开发一个具有“执行操作时请稍候”窗口的程序。在运行批处理文件时,此窗口需要保持打开状态。批处理完成后窗口关闭。我正在使用 Python 方法 .after() 在窗口打开后调用批处理。问题发生在 .after() 中设置的时间之后,窗口关闭并重新打开,变为白色并且不显示任何文本。这是相关的代码。

   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() 错了吗?完成这项任务的更合适的方法是什么?谢谢你的帮助!

4

1 回答 1

1

after方法self.runBackup在 200* ms * 后运行,其中包括self.backupCB.destroy()您的等待窗口。
如果您的意图是在窗口被销毁之前等待 x 时间,您可能会考虑os.system('.\\src\\backup.bat %s' % name) 进入backupCallBack该方法的上方after(并将 200 毫秒更改为更重要的时间)。否则,您将需要弄清楚如何设置相当于 if batch == done

于 2012-07-06T03:31:07.137 回答