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