confused about classes and tkinter object design

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Wed Nov 26 13:09:06 CET 2008


marc wyburn a écrit :
> Hi,
> 
> I've created my first Tkinter GUI class which consists of some buttons
> that trigger functions.  I have also created a
> tkFileDialog.askdirectory control to local a root folder for log
> files.
> 
> I have several file paths that depend on the value of
> tkFileDialog.askdirectory should I create an object that inherits this
> value or can I point functions at the GUI class?
> 
> I am creating the tkinter GUI instance using;
> 
> if __name__ == "__main__":
>     GUI = AuditorGUI()

Note that at this point, the AuditorGUI class is not yet defined, so you 
should get a NameError.

>     GUI.mainloop()
 >
> class AuditorGUI(Frame):

I assume you have all necessary imports in your real code...

>     def __init__(self):
>         Frame.__init__(self)
>         self.pack(expand = YES, fill = BOTH)
> 
> ##      Create GUI objects
> 
>         self.currentdir = StringVar()
>         self.currentdir.set(os.getcwd())
> 
>         self.logdir = Button(self, text="Choose Data
> directory",command=self.choose_dir)
>         self.logdir.grid(row=1,column=0,sticky='nsew',pady=20,padx=20)
> 
>         self.labeldirpath = Label(self, textvariable=self.currentdir)
> 
>     def choose_dir(self):
>         dirname = tkFileDialog.askdirectory
> (parent=self,initialdir=self.currentdir.get(),title='Please select a
> directory')
>         if len(dirname ) > 0:
>             self.currentdir.set(dirname)
> 
> I think I have created an instance of the AuditorGUI class called GUI
> so should be able to access the path using GUI.currentdir but this
> doesn't work.

"does not work" is (almost) the less possible usefull description of a 
problem. What happens exactly ? Do you have a traceback ? If so, please 
post the full traceback and error message. Else, please explain what 
result you get. And if possible, post minimal *working* code reproducing 
the problem.

> I'm still struggling with classes so not sure whether my problem is
> tkinter related or not.

Minus the couple problems above (ie: trying to instanciate a 
non-yet-existing class, and lack of necessary imports), it seems correct 
- at least wrt/ class definition and instanciation.



More information about the Python-list mailing list