Я искал везде в Интернете, но, к сожалению, нигде не нашел Я нахожу ответ на этот вопрос:
после установки текстовой переменной виджета tkinter Entry () в текстовую переменную.
текстовая переменная не обновляется после того, как я ввел текст в запись.
код ниже:
def saveFileName(self):
if (self.save_file_name != ""):
self.window.destroy()
self.name_not_set = False
print("saving...")
else:
print("notsaving...entry empty")
pass
def cancel(self):
self.name_not_set = False
self.exit = True
self.window.destroy()
print("exiting...")
def askForFilename(self):
self.window = tk.Tk()
self.window.wm_title("enter a file name")
label = Label(self.window,text = "please enter a file name:").pack(side = "top")
entry = Entry(self.window,textvariable=self.save_file_name).pack()
save = Button(self.window,text = "save",command=self.saveFileName).pack()
cancel = Button(self.window,text = "cancel",command=self.cancel).pack()
self.window.mainloop()
Необходимые переменные определены, и эти методы являются частью класса, который является экземпляром tk.TK ().

эта проблема очень надоедает
:( очень грустный :(
Заранее спасибо и счастливого Рождества!
Обратите внимание, что такие операторы, как label = Label(self.window,text = "please enter a file name:").pack(side = "top"), присваивают результат вызова pack переменной с именем label, что часто может вызывать проблемы (возможно, ваши).






Текстовая переменная, связанная с Entry, должна быть StringVar(). Я не вижу такого объявления в вашем коде.
self.save_file_name = StringVar()
Чтобы установить и получить значение StringVar(), вы должны использовать метод set() или get(), например.
def saveFileName(self):
if (self.save_file_name.get() != ""):
self.window.destroy()
# etc, etc.
Кроме того, не создавайте более одного экземпляра Tk(), как в:
def askForFilename(self):
self.window = tk.Tk()
Вместо этого используйте Toplevel(). Или даже лучше: используйте диалоги файлов tkinter.
Спасибо! Я установил переменную StringVar в поле данных. который я не включил в свой код выше, извините за инклюзивность (если это слово), но проблема, похоже, вторая, о чем вы упомянули. Я забыл вызвать .get () в StringVar,: D
Покажите, пожалуйста, как вы определили переменную.