How to change Tkinter Label widget text without global variable in a class?
Thomas Hoffend
trhoffend at mediaone.net
Thu Jul 19 09:54:37 EDT 2001
Never mind, I figured it out as soon as I graduated to list boxes. Silly
me, here is the new code snippet:
....
# Put some text under the button to show the path
self.PathStr = fullpath
self.label1 = Label(frame, text=self.PathStr)
self.label1.pack()
# The class will store the full path:
PathStr = fullpath
# Here is a function to go up one directory - eventually (right now it
just manipulates the path name):
def go_up_one(self):
print "Going Up!"
self.PathStr = (os.path.dirname(self.PathStr))
print self.PathStr
self.label1['text']=self.PathStr
...
"Thomas Hoffend" <trhoffend at mediaone.net> wrote in message
news:ZtB57.5672$X6.251588 at typhoon.mn.mediaone.net...
>
> I am new to Python and working on learning Tkinter.
>
> I ordered some of the books recommended on the Python web site, and also
> have been going
> through the online tutorial on Tkinter and reading old newgroup articles.
> There is one point which
> I found that sort of bugs me, and that is I can't figure out how to change
a
> Label widget text
> without using some sort of global variable. It seems that declaring a
> global variable inside a class
> is not the best thing to do, especially if there is the possibility that
you
> will create multiple instances of
> the class (unless maybe I don't understand the scope of the global
> variable - is it
> global just inside the class?). So is there some way to change the label
> text without a global
> variable? For example:
>
> #
> # Script to pop up the current directory name in a window and go up one
> directory;
> # I hope to turn this into a directory selector.
> #
>
> from Tkinter import *
> import os
> import os.path
>
> path = os.path.abspath('.')
> fullpath = os.path.normpath(path)
>
> class mywidget:
> #
> def __init__(self, master):
>
> frame = Frame(master)
> frame.pack()
>
> # Make a button to go up one directory (well, at least manipulate a
> string with the path name for now):
> self.upbutton = Button(frame, text="Up", command=self.go_up_one)
> self.upbutton.pack(side=TOP)
>
> # Put some text under the button to show the path:
> global vCurrentPath
> vCurrentPath = StringVar()
> label1 = Label(frame, textvariable=vCurrentPath)
> label1.pack()
> vCurrentPath.set(self.PathStr)
>
> # The class will store the full path:
> PathStr = fullpath
>
> # Here is a function to go up one directory - eventually (right now it
> just manipulates the path name):
> def go_up_one(self):
> print "Going Up!"
> self.PathStr = (os.path.dirname(self.PathStr))
> print self.PathStr
> vCurrentPath.set(self.PathStr)
>
> root = Tk()
> app = mywidget(root)
> root.mainloop()
>
>
More information about the Python-list
mailing list