Getting value from Tkinter entry widget: variable scope difficulty
jim-on-linux
inq1ltd at verizon.net
Mon Nov 20 00:00:22 EST 2006
Kevin,
if the present value of searchterm is what you
want, I suggest you make a class
class Kgui:
def __init__(self) : # init self
self.makeGUI()
def makeGUI(self):
###lots of code to set up toplevel windows
searchbutton=Button(topframe,
image=searchglass, command=self.doSomething)
searchbutton.image=searchglass
searchbutton.pack(side=LEFT, expand = NO)
# and all the resrt of the code
def doSomething(self):
file = os.popen('systemcommand %s' %
searchterm, 'r')
self.searchterm = searchterm
print self.searchterm #used inside the class
Kgui.searchterm = searchterm
print Kgui.searchterm #used outside the class
you can also do;
Kgui.searchterm = self.searchterm = searchterm
I think this is what you are asking for.
jim-on-linux
http://www.inqvista.com
On Sunday 19 November 2006 21:18, Kevin Walzer
wrote:
> I'm trying to construct a simple Tkinter GUI
> and I'm having trouble with getting the value
> of an entry widget and passing it onto a
> callback function. But I'm not grokking
> variable scope correctly.
>
> I have two functions. Here are the relevant
> excerpts:
>
> def makeGUI():
>
> ###lots of code to set up toplevel windows
>
> searchbutton=Button(topframe,
> image=searchglass, command=doSomething)
> searchbutton.image=searchglass
> searchbutton.pack(side=LEFT, expand = NO)
>
> searchterm=StringVar()
>
> entryterm=Entry(topframe,
> textvariable=searchterm)
> entryterm.pack(side=RIGHT)
>
> entrylabel=Label(topframe, text="Search:")
> entrylabel.pack(side=RIGHT)
>
>
> def doSomething():
>
> file = os.popen('systemcommand %s' %
> searchterm, 'r')
>
> print searchterm
>
> ---
>
> What I want to happen is the value of
> searchterm to be passed on to the doSomething()
> call when the searchbutton is pressed. Right
> now it appears the value of "searchterm" is
> local to each function.
>
> In Tcl this would be handled by simply
> assigning the variable "searchterm" to the
> global namespace in each function, i.e. "global
> searchterm." I've looked and can't quite figure
> out how to do this in Python. Any advice is
> appreciated.
>
> --
> Kevin Walzer
> Code by Kevin
> http://www.codebykevin.com
More information about the Python-list
mailing list