tkinter 条目小部件未更新 [英] tkinter entry widget not updating
问题描述
我在网上到处搜索,但不幸的是没有找到我找到了这个问题的答案:
I've searched everywhere on the web but unfortunately no where did I find an answer to this question:
在将 tkinter Entry() 小部件的文本变量设置为文本变量之后.
after setting a tkinter Entry() widget's textvariable to a textvariable.
在条目中输入文本后,文本变量不会更新.
the text variable does not update after I have typed text into the 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() 实例的类.
The necessary variables have been defined and these methods are part of a class which is a tk.TK() instance.
这个问题很麻烦:(非常难过:(
this problem is very bothersome :( very sad :(
谢谢你,提前祝你圣诞快乐!
Thank you and merry christmas in advance!
推荐答案
与 Entry 关联的文本变量应该是 StringVar()
.我没有在你的代码中看到任何这样的声明.
A textvariable associated with an Entry should be a StringVar()
. I don't se any such declaration in your code.
self.save_file_name = StringVar()
要设置和获取 StringVar()
的值,您必须使用 set()
或 get()
方法,例如.
To set and get the value of a StringVar()
you must use the set()
or get()
method, eg.
def saveFileName(self):
if(self.save_file_name.get() != ""):
self.window.destroy()
# etc, etc.
此外,不要创建多个 Tk()
的实例,如下所示:
Also, don't create more than one instance of Tk()
as in:
def askForFilename(self):
self.window = tk.Tk()
使用 Toplevel()
代替.甚至更好:使用 tkinter 文件对话框.
Use Toplevel()
instead. Or even better: use the tkinter filedialogs.
这篇关于tkinter 条目小部件未更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!