Reputation: 87
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!
Upvotes: 0
Views: 2952
Reputation: 7176
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.
Upvotes: 1