我在网络上到处搜索过,但不幸的是没有在哪里搜索过 我找到了这个问题的答案:
在将tkinter Entry()小部件的textvariable设置为textvariable之后。
在输入文本后,文本变量不会更新。
以下代码:
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()实例的。
谢谢你和圣诞快乐!
答案 0 :(得分:0)
与条目相关联的文本变量应为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文件对话框。