Функция главного вызова функции Tkinter () автоматически - PullRequest
0 голосов
/ 31 декабря 2011

Я довольно новичок в Tkinter, но начинаю пытаться добавлять более сложные графические интерфейсы в мои скрипты. Так что это должно быть довольно просто, но я не могу понять, что происходит не так.

То, что я хочу, довольно просто, несколько вариантов ввода данных и внизу кнопки выхода и отправки. Кажется, что mainloop () или что-то еще продолжает выполнять команду кнопки без какого-либо пользовательского ввода. Таким образом, из-за кнопки выхода, апплет уничтожается еще до его появления. Если я помещу кнопки за пределы mainloop (), проблем не возникает, но, конечно, это не имеет смысла, и кнопки не отображаются.

button_exit = Tkinter.Button(root, text = 'Exit', command = root.destroy())
button_exit.grid(row=3, column=0, pady=10, sticky='E')
button_query = Tkinter.Button(root, text = 'Query', command = intQuery())
button_query.grid(row=3, column=1, padx=10, sticky='E')

root.mainloop()

Это в основном проблемная область кода. Остальное - просто поля ввода данных, большая часть сценария еще даже не написана.

Заранее спасибо.

1 Ответ

3 голосов
/ 31 декабря 2011

Изменение

command = root.destroy()

на

command = root.destroy

Причина в следующем: скобки вызывают метод, а аргументы метода оцениваются перед передачей вметод.Вот почему ваша программа завершает работу слишком рано.

Без скобок вы ссылаетесь на метод как объект , который можно передать в Tkinter.Button, сохранить и вызвать позже, когдакнопка нажата.

Затем сделайте то же самое с command = intQuery().

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