tkinter 条目小部件未更新
tkinter entry widget not updating
我在网上到处搜索,但遗憾的是没有找到
我找到了这个问题的答案:
将 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()
必要的变量已经定义,这些方法是一部分
class 的 tk.TK() 实例。
这个问题很麻烦
:( 很伤心 :(
谢谢你,提前祝你圣诞快乐!
与条目关联的文本变量应该是 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 文件对话框。
我在网上到处搜索,但遗憾的是没有找到 我找到了这个问题的答案:
将 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()
必要的变量已经定义,这些方法是一部分 class 的 tk.TK() 实例。
谢谢你,提前祝你圣诞快乐!
与条目关联的文本变量应该是 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 文件对话框。