我正在使用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 ..传递了and参数,就像下面的代码一样,“ please wait”消息将永远不会出现。
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()
我会尝试functools.partial来包装您的电话,如下所示:
widget.after(10, functools.partial(self.runBackup, mybackup))
或者,您可以定义一个不带参数但传递参数的局部函数(实质上是functools.partial所做的事情)。