私が tkinter を使用して構築している GUI の一部には、「プログラムの実行中はお待ちください」というポップアップ ウィンドウがあります。それが終了すると、ウィンドウは消えます。widget.after コマンドを使用して、ウィンドウを開いてコマンドを実行しています。ただし、引数を呼び出す関数を渡すと、ポップアップ ウィンドウは表示されません。次に例を示します。
def backupWindow
self.restoreCB = Toplevel()
message = "Please wait while backup runs"
Label(self.restoreCB, text=message, padx=100, pady=20).pack()
widget.after(10, self.runBackup)
def runBackup(self):
<backup code>
self.backupCB.destroy()
これは正常に実行され、やりたいことを実行します。バックアップの実行中にウィンドウがポップアップし、バックアップ後にウィンドウが閉じます。ただし、以下のコードのようにwidget.afterからand引数を渡すと、「しばらくお待ちください」というメッセージは表示されません。
def backupWindow
self.restoreCB = Toplevel()
message = "Please wait while backup runs"
Label(self.restoreCB, text=message, padx=100, pady=20).pack()
widget.after(10, self.runBackup(mybackup))
def runBackup(self,mybackup):
<backup code using mybackup>
self.backupCB.destroy()