Unable to return value from callback function of a button in Python Tkinter - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: Unable to return value from callback function of a button in Python Tkinter (/thread-12007.html) |
Unable to return value from callback function of a button in Python Tkinter - nilaybnrj - Aug-05-2018 Hi Team I am trying to get the input written in an Entry box using Tkinter, But whenever I am trying to do so I am not getting the desired result..Instead a None is getting returned. Please help My code is given below from Tkinter import * class menu: def __init__(self,master): self.master=master self.var1 = StringVar() self.entry = Entry(self.master,textvariable=self.var1) self.entry.pack(side=TOP) self.var2 = StringVar() self.value=self.get_value() self.button = Button(self.master,text='Hit Me',command = self.get_value) self.button.pack(side=TOP) def get_value(self): self.value= self.var1.get() if __name__=="__main__": root = Tk() Menu = menu(root) print Menu.value root.mainloop() in this while printing Menu.value I am getting None instead off getting what I entered into Entry.Please help.Thanks in advance.
RE: Unable to return value from callback function of a button in Python Tkinter - Windspar - Aug-05-2018 1. Don't flood namespace. from Tkinter import *this is better. import Tkinter as tkExample. Every thing seems to be working find. import Tkinter as tk class Menu: def __init__(self,master): self.master=master self.var1 = tk.StringVar() self.entry = tk.Entry(self.master, textvariable=self.var1) self.entry.pack(side=tk.TOP) self.button = tk.Button(self.master,text='Hit Me',command = self.get_value) self.button.pack(side=tk.TOP) self.value = None def get_value(self): print(self.entry.get()) print(self.var1.get()) self.value = self.entry.get() print(self.value) if __name__=="__main__": root = tk.Tk() menu = Menu(root) root.mainloop() RE: Unable to return value from callback function of a button in Python Tkinter - nilaybnrj - Aug-05-2018 (Aug-05-2018, 12:58 PM)Windspar Wrote: 1. Don't flood namespace. Hi Windspar, Thanks for your input.But what I want is to return the input value to a variable in the main program so that I can use t for other purpose. Actually my idea is to make one FTP GUI app so that user will provide input in GUI app & after the pressing Hit Me button the main program will be able to fetch the input details of user from this GUI. In this program if I am trying to return a value the output is coming as None. So, please tell me how I can use this input in entry box to another program? Again thank you very much for your input. RE: Unable to return value from callback function of a button in Python Tkinter - Windspar - Aug-05-2018 You never going to be able to print anything in the main area. Program must run first. Then when program ends. All widgets are destroyed. All this happens when mainloop is called. Example import Tkinter as tk class Main: root = tk.Tk() value = "None" class Menu: def __init__(self, master): self.master = master self.entry = tk.Entry(self.master) self.entry.pack(side=tk.TOP) self.button = tk.Button(master,text='Hit Me',command = self.get_value) self.button.pack(side=tk.TOP) self.button_send = tk.Button(master, text="Get Text", command=self.get_text) self.button_send.pack() self.label = tk.Label(master, text=Main.value) self.label.pack() def get_value(self): Main.value = self.entry.get() def get_text(self): #self.label['text'] = self.entry.get() self.label['text'] = Main.value if __name__=="__main__": Main.menu = Menu(Main.root) Main.root.mainloop() RE: Unable to return value from callback function of a button in Python Tkinter - woooee - Aug-05-2018 It has to go after the mainloop(), otherwise you print it before tkinter runs, i.e root.mainloop() print Menu.valueNote that classes use UpperCase and variables use lower_case_with_underscores. You should also state that you are using Python2.X, which is the exception, as Python3 is what most people are using (Python2 reaches end of life in 2020). |