Tkinter programming problem

klappnase klappnase at web.de
Tue Aug 5 01:44:22 CEST 2003


> 
> 
> # Demonstration TK interface Windows application
> # Runs ok from within IDLE
> #
> from Tkinter import *
> 
> class CommonStuff:   # to get common access to variables and functions
>     def __init__(self, frame):
>         self.frame = frame
> 
>     def say_hi(self):
>         print "Hello all"
> 
> 
> class MyWidgets(Frame, CommonStuff):
>     def __init__(self, CS):
>         Frame.__init__(self, CS.frame)
>         self.quitbutton = Button(self, text='Quit', fg='red',
> command=self.destroy)
>         self.quitbutton.pack(side=LEFT)
>         self.hi_there = Button(self, text='Hello', command=CS.say_hi)
>         self.hi_there.pack(side=LEFT)
> 
> 
> class Application:
>     def __init__(self, master):
>         self.frame=Frame(master)
>         CS = CommonStuff(self.frame)
> 
>         displayedwidget=MyWidgets(CS)
>         displayedwidget.grid(row=0, column=0)
>         self.frame.grid(row=0, column=0)
>         displayedwidget.bind("<Destroy>", self.quit)
>         self.frame.update()
>         
>     def quit(self, event):
>         print"Quitting..."
>         self.frame.destroy()  # Destroy frame and all children
> 
>         
> root = Tk()
> mainWin = Application(root)
> root.mainloop()

I think you could have it easier, if you just want to exit you
application with the quit button:

class MyWidgets(Frame, CommonStuff):
     def __init__(self, CS):
         Frame.__init__(self, CS.frame)
         self.quitbutton = Button(self, text='Quit', fg='red',
                                   command=self.quit)
         self.quitbutton.pack(side=LEFT)
         self.hi_there = Button(self, text='Hello', command=CS.say_hi)
         self.hi_there.pack(side=LEFT)

     def quit(self):
         print "Quitting..."
         sys.exit(0)

If you want to run it from within the interpreter (I am not sure if it
is that what you are trying) the following might work too:

 class Application:
     def __init__(self, master):
         self.frame=Frame(master)
         CS = CommonStuff(self.frame)
 
         displayedwidget=MyWidgets(CS)
         displayedwidget.grid(row=0, column=0)
         self.frame.grid(row=0, column=0)
         displayedwidget.bind("<Destroy>", self.quit)
         self.frame.update()
         
         self.master = master

     def quit(self, event):
         print"Quitting..."
         self.master.destroy()  # Destroy root window

However I would recommend to store the code in a file and then run the
file.
I am sorry that I cannot give you more detailed advice, but I am still
a beginner, too. I hope this helped anyway.

Good luck!

Michael




More information about the Python-list mailing list