Прежде всего обратите внимание, что я делаю все это в Enthought/Canopy.Python tkinter button lagging/printing at exit
У меня есть этот базовый графический интерфейс, в котором есть 4 поля ввода, в которые вы вводите материал, а затем вы нажимаете кнопку и печатаете материал, который вы ввели. Однако он не работает так, как я этого хочу. Когда вы запускаете код и вводите значения и нажимаете кнопку, он ничего не сделает, затем вы закрываете окно gui и печатаете введенные значения.
Кроме того, когда вы ввели значения и один раз нажмете кнопку, снова ничего не получится, но если вы снова нажмете на кнопку, она напечатает значения, но не так, как ожидалось. Скажем, вы ввели 1, 2, 3, 4 и дважды нажмите кнопку, то, что вы видите на экране, - 1, 2, 3, 4, 1, и когда вы закроете окно, оно распечатает остальные.
Буду признателен, если вы, люди, можете мне помочь. Заранее спасибо. Ниже приведен мой код:
Обновление: Эта проблема не происходит с IDLE, но только Canopy.
from Tkinter import *
class Application:
def printcmd(self):
print(self.entrybox.get())
def __init__(self, master):
self.entrybox = Entry(master)
self.button = Button(master, text="print", command = self.printcmd)
self.entrybox.grid()
self.button.grid()
root = Tk()
Application(root)
root.mainloop()
Я не говорю, что это исправит вашу проблему, поэтому его комментарий вместо ответа, но python - это сборник мусора. Создание экземпляра 'Application', не присваивая его переменной, может привести к возникновению нечетных вещей, если задействован сборщик мусора. Как я уже сказал, по всей вероятности, это не решит вашу проблему, но ее стоит сделать и по-прежнему создает хорошую форму программирования. –
Я изменил приложение на приложение и попробовал c = App (root), но, к сожалению, я все равно получаю такое же странное поведение. Что делает его настолько странным, так это то, что это очень простая программа с несколькими паролями, но я попытался запустить это с помощью IDLE, и я не получаю эту проблему, когда я это делаю. – Deniz