tkinter条目小部件未更新

时间:2018-11-19 00:38:12

标签: python tkinter tkinter-entry

我在网络上到处搜索过,但不幸的是没有在哪里搜索过 我找到了这个问题的答案:

在将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()实例的。

my attempt to enter a name :( console log 这个问题很麻烦 :(很伤心:(

谢谢你和圣诞快乐!

1 个答案:

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