【问题标题】:Starting an external process after opening a new tkinter window. [Python]打开新的 tkinter 窗口后启动外部进程。 [Python]
【发布时间】:2012-07-05 14:42:43
【问题描述】:

我正在开发一个具有“正在执行操作时请稍候”窗口的程序。在运行批处理文件时,此窗口需要保持打开状态。批处理完成后窗口关闭。我正在使用 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() 错了吗?完成这项任务的更合适的方法是什么?感谢您的帮助!

【问题讨论】:

    标签: python process window tkinter external


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      相关资源
      最近更新 更多