Getting value from Tkinter entry widget: variable scope difficulty

Kevin Walzer kw at kevin-walzer.com
Sun Nov 19 21:18:14 EST 2006


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