Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2010 08:33:28

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по вызову конструктора супер класса.

Всем здравствуйте! Пытаюсь сделать пример из книги Саммерфилда.
Делаю так:

import os

import Tkinter

class MainWindow(Tkinter.Frame):
def __init__(self, parent):
super(MainWindow, self).__init__(parent)

self.parent = parent
self.grid(row=0, columns=0)
etc...
Создаю объект:
application = Tkinter.Tk()
#path = os.path.join(os.path.dirname(__file__), "images/")
application.title("Testing")

window = MainWindow(application)
application.protocol("WM_DELETE_WINDOW", window.quit)
application.mainloop()
и в итоге ошибка:

super(MainWindow, self).__init__(parent)
TypeError: super() argument 1 must be type, not classobj


Кто нибудь объясните мне в чем проблема и как ее решить



Офлайн

#2 Июнь 6, 2010 17:50:03

gkraser
От:
Зарегистрирован: 2007-08-25
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по вызову конструктора супер класса.

Функция super() предназначена для использования в new-style классах. В данном случае Tkinter.Frame - old-style класс. Поэтому писать нужно так:

...
class MainWindow(Tkinter.Frame):
def __init__(self, parent):
#super(MainWindow, self).__init__(parent)
Tkinter.Frame.__init__(self, parent)
...



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version