Python Tkinter多个命令

时间:2016-02-04 16:21:36

标签: python tkinter

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

当我点击“重启”按钮时,我希望它运行重启代码,然后销毁其上有两个按钮的窗口。我在SO上看到了其他东西,让你通过点击按钮一次运行两个命令,但我似乎无法让它工作。现在按钮的代码是:

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

执行时,似乎restartExternal代码正在运行,但它也不会破坏窗口。任何建议将不胜感激!

3 个答案:

答案 0 :(得分:2)

只需创建一个调用这两种方法的方法。为此创造一个额外的功能是没有羞耻的。这是一个更易于维护的解决方案,试图将一堆代码塞入lambda。

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

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

答案 1 :(得分:0)

而不是Counter你可以做self.restartExternal() and restartWindow.destroy。这样,无论[self.restartExternal(), restartWindow.destroy()]返回什么,都会调用restartWindow.destroy(),而如果self.restartExternal()返回False,Python甚至不检查self.restartExternal()是否为True或假。除此之外,你的restartWindow.destroy甚至没有被调用,因为你遗漏了括号。

答案 2 :(得分:0)

Bryan提出的答案看起来很合理,但是变化很小-您可以将函数列表提供给lambda函数,如下所示:

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

我认为,至少两个功能看起来更好。