Найти - Пользователи
Полная версия: tkinter не хочет запускаться с помощью ООП
Начало » GUI » tkinter не хочет запускаться с помощью ООП
1
Saturn
Всем добрый вечер.
Разница в том что в процедурном стиле все работает а в ООП не хочет.

win = Frame()
win.pack()
Label(win, text='Basic demos').pack()
for(key, value) in demos.items():
    Button(win, text=key, command=value).pack(side=TOP, fill=BOTH)
win.mainloop() 



class Demo(Frame):
    def __init__(self, parent=None, **options):
        Frame.__init__(self, parent, **options).pack()
        Label(self, text='Basic demos').pack()
        for(key, value) in demos.items():
            Button(self, text=key, command=value).pack(side=TOP, fill=BOTH)
Demo.mainloop()

Использую Python 3.3

В результате ошибка
Demo.mainloop()
TypeError: mainloop() missing 1 required positional argument: ‘self’
Не пойму почему ругается что отсутствует self
sp3
-Demo.mainloop()
+Demo().mainloop()

-Frame.__init__(self, parent, **options).pack()
+Frame.__init__(self, parent, **options)
+self.pack()
Saturn
sp3 Спасибо, теперь все работает.
4kpt
sp3
Высокоинтеллектуальный выопрос.
Я не пользуюсь 3. В моем случае:
+Demo.mainloop() 
-Demo().mainloop()
Правильно?

Заранее спасибо за ответ…
sp3
4kpt
Здесь Demo - класс
Demo() - экземпляр этого класса
так что неправильно.
4kpt
Понял. Просто я предварительно присваиваю экземпляр класса какой-нибуть переменной, а потом выполняю .mainloop. Стало интересно, как это сделать одной строкой. Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB