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.runBackup200* ms *後に実行され、self.backupCB.destroy()これには待機ウィンドウが含まれます。
ウィンドウが破棄されるまでにx時間待機する場合は、メソッドの上に移動os.system('.\\src\\backup.bat %s' % name) することを検討してください(200ミリ秒をより実質的なものに変更してください)。それ以外の場合は、次と同等の条件を設定する方法を理解する必要があります。 、backupCallBackafterif batch == done

于 2012-07-06T03:31:07.137 に答える