What is the differences between tkinter in windows and Tkinter in the other platform?

Peter Otten __peter__ at web.de
Mon Dec 14 10:44:19 EST 2009


Hidekazu IWAKI wrote:

> Hi, I'm hidekazu.
> 
> I'm making a Tk application with python.
> In the below code, the class App was inherited from Tkinter.Tk and the
> __init__ method calls Tk's constructor with `super` method. In windows,
> this code is valid (but, Tkinter -> tkinter).
> 
> Why does this code happen a type error in not windows platform?
> 
> thank you.
> 
> #--------------------------------------------------------
> from Tkinter import *
>  
> class App(Tk):
>     def __init__(self):
>         super(Tk,self).__init__()
>  
> App().mainloop()
>  
> #Traceback (most recent call last):
> #  File "./app.py", line 16, in <module>
> #    App().mainloop()
> #  File "./app.py", line 7, in __init__
> #    super(Tk,self).__init__()
> #TypeError: super() argument 1 must be type, not classobj

In Python 2.x Tkinter uses classic classes (classes that do not inherit from 
object), and super() can't handle these. In 3.x classic classes are gone, 
and tkinter uses newstyle classes. So the behaviour changes from 2.x to 3.x, 
but should be the same on all platforms.

Peter



More information about the Python-list mailing list