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:
Quote:
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