Python-Tkinter多个命令

2024-10-01 11:39:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Tkinter和Python开发GUI。我创建的一个窗口上有两个按钮:一个用于重新启动单独的python脚本,另一个用于关闭整个程序。在

当我点击“重新启动”按钮时,我希望它运行重新启动代码,然后销毁上面有两个按钮的窗口。我看到了其他东西,这样你就可以通过点击按钮同时运行两个命令,但我似乎不能让它工作。现在按钮的代码是:

buttonRestart = Button(restartWindow, text = "Restart", width = 8,
    height=3, command = lambda: self.restartExternal() and
    restartWinow.destroy)

执行时,restartExternal代码似乎正在工作,但它不会破坏窗口。如有任何建议,我们将不胜感激!在


Tags: 代码text命令程序脚本tkinterguibutton
3条回答

Bryan提出的答案看起来很合理,但更改最少—您可以将函数列表提供给lambda函数,如下所示:

buttonRestart = Button(restartWindow, text = "Restart", width = 8,
    height=3, command = lambda: [self.restartExternal(),
                                 restartWinow.destroy()] )

在我看来,至少有两个功能看起来更好。在

只需创建一个调用这两个方法的方法。Tere为这个创建了一个额外的函数,这一点并不丢人。这是一个更易于维护的解决方案,它试图将一堆代码塞进lambda中。在

def on_restart(self):
    self.restartExternal()
    self.restartWinow.destroy()

buttonRestart = Button(..., command = self.on_restart)

代替self.restartExternal() and restartWindow.destroy你可以做[self.restartExternal(), restartWindow.destroy()]。这样,它将调用restartWindow.destroy()无论self.restartExternal()返回什么,而如果{}返回False,Python甚至不检查{}是真是假。除此之外,restartWindow.destroy在你的代码中甚至没有被调用,因为你省略了括号。在

相关问题 更多 >