main window in tkinter app
William Gill
noreply at gcgroup.net
Tue Jul 19 14:08:48 EDT 2005
It also seems to operate the same with or without " app.mainloop()". Is
an explicit call to mainloop needed?
William Gill wrote:
> O.K. I tried from scratch, and the following snippet produces an
> infinite loop saying:
>
> File "C:\Python24\lib\lib-tk\Tkinter.py", line 1647, in __getattr__
> return getattr(self.tk, attr)
>
> If I comment out the __init__ method, I get the titled window, and print
> out self.var ('1')
>
>
> import os
> from Tkinter import *
>
> class MyApp(Tk):
> var=1
> def __init__(self):
> pass
> def getval(self):
> return self.var
>
>
> app = MyApp()
>
> app.title("An App")
> print app.getval()
> app.mainloop()
>
>
> Eric Brunel wrote:
>
>> On Mon, 18 Jul 2005 16:57:51 GMT, William Gill <noreply at gcgroup.net>
>> wrote:
>>
>>> A short while ago someone posted that(unlike the examples) you should
>>> use Tk as the base for your main window in tkinter apps, not Frame.
>>> Thus :
>>>
>>> class MyMain(Frame):
>>> def __init__(self, master):
>>> self.root = master
>>> self.master=master
>>> self.createWidgets()
>>> def createWidgets():
>>> ...
>>> root = Tk()
>>> app = MyMain(root)
>>> app.master.title("Object Editor")
>>> root.mainloop()
>>>
>>> would become:
>>>
>>> class MyMain(Tk):
>>> ...
>>> ...
>>> app = MyMain()
>>> app.title("My App")
>>> app.mainloop()
>>>
>>> When I try converting to this approach I run into a problem with the
>>> __init__() method. It appears to go into an infinite loop in
>>> tkinter.__getattr__().
>>
>>
>> [...]
>>
>> I never ran into this problem. Can you please post a short script
>> showing this behavior? Without knowing what you exactly do in your
>> __init__ and createWidgets method, it's quite hard to figure out what
>> happens...
More information about the Python-list
mailing list