2016-02-04 6 views
1

В настоящее время я работаю над графическим интерфейсом, используя Tkinter и Python. В одном из окон, которые я создаю, есть две кнопки: один для перезапуска отдельного скрипта python, а другой - для закрытия всей программы.Несколько команд Python Tkinter

Когда я нажимаю кнопку «перезагрузка», я бы хотел, чтобы он запускал код перезагрузки, а затем уничтожал окно, на котором есть две кнопки на нем. Я видел что-то еще на SO, которое позволяет запускать сразу две команды одним нажатием кнопки, но я не могу заставить ее работать. Сейчас код кнопки:

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

При выполнении, кажется, что restartExternal код работает, но он не уничтожает окно, а также. Любые предложения будут ценны!

ответ

2

Просто создайте метод, который вызывает два метода. Тере не стыдно создавать дополнительную функцию для этого. Это гораздо более удобное решение, которое пытается втиснуть кучу кода в лямбду.

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

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

Thanks! Это определенно сработало! – ScottH

0

Вместо self.restartExternal() and restartWindow.destroy вы можете сделать [self.restartExternal(), restartWindow.destroy()]. Таким образом, он будет вызывать restartWindow.destroy() независимо от того, что возвращает self.restartExternal(), тогда как как это сделать, если self.restartExternal() возвращает False, Python даже не проверяет, является ли restartWindow.destroy True или False. Кроме того, restartWindow.destroy даже не вызывается в вашем, потому что вы оставили круглые скобки.

Смежные вопросы