Как заставить кнопку tkinter уничтожить / выйти из корневого окна во вложенной функции? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь сделать так, чтобы при нажатии кнопки tkinter назначалось значение, а затем выход из графического интерфейса.

Моя проблема в том, что root.quit не оказывает влияния на функции, отличные от вызывающей его, даже на вложенные функции.

Код:

<code>
from tkinter import Tk,Button
def buttonDialogWindow():
    root = Tk()
    def buttonPress(isHeadArg):
        #Do something
        root.quit<br>
    Button(root, text='Front of String', command = buttonPress(1)).pack()
    Button(root, text='Back of String', command = buttonPress(0)).pack()
    root.protocol("WM_DELETE_WINDOW", root.quit)
    root.mainloop()
buttonDialogWindow()

Запуск кода заставляет кнопки появляться.Нажатие на них не влияет на GUI, и основной цикл не завершается.

1 Ответ

0 голосов
/ 17 мая 2019

Ответ:

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

command = buttonPress

Если у вас есть параметры, я нашел обходной путь, используя лямбду: мой код в настоящее время имеет

command = lambda: buttonPress(1)

для команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...