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 文件对话框。