简体   繁体   中英

tkinter entry widget not updating

I've searched everywhere on the web but unfortunately no where did I find an answer to this question:

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.

code below:

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()

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!

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()

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.

Also, don't create more than one instance of Tk() as in:

def askForFilename(self):
    self.window = tk.Tk()

Use Toplevel() instead. Or even better: use the tkinter filedialogs.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM