Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 26, 2014 10:02:50

zlodiak
От: Россия
Зарегистрирован: 2014-01-19
Сообщения: 159
Репутация: +  0  -
Профиль   Адрес электронной почты  

зачем наследовать от Frame ?

помогите пожалуйста разобраться в одном важном для меня вопросе

принято создавать интерфейсы через классы. это делается для того чтобы:

  • можно было при желании удобным образом вставить готовый интерфейс в определённое место программы.
  • можно было клонировать функциональность, не дублируя код
  • код интерфейса находился в определённом контексте(то есть отсутствовали бы конфликты переменных)

НО что я никак не могу понять, так это зачем класс нужно наследовать от Frame. вот например распространённый шаблон:

import tkinter
import tkinter.messagebox
class Quitter(tkinter.Frame):                          
    def __init__(self, parent=None):          
        tkinter.Frame.__init__(self, parent)
        self.pack()
        widget = tkinter.Button(self, text='Quit', command=self.quit)
        widget.pack(side='left', expand='yes', fill=tkinter.BOTH)
    def quit(self):
        ans = tkinter.messagebox.askokcancel('Verify exit', "Really quit?")
        if ans: tkinter.Frame.quit(self)
if __name__ == '__main__':  Quitter().mainloop()

Отредактировано zlodiak (Янв. 26, 2014 10:08:12)

Офлайн

#2 Янв. 26, 2014 18:57:19

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

зачем наследовать от Frame ?

А зачем нужны рамки?
Если правильно ответите на этот вопрос, то ответите и на свой

Офлайн

#3 Янв. 26, 2014 19:25:39

zlodiak
От: Россия
Зарегистрирован: 2014-01-19
Сообщения: 159
Репутация: +  0  -
Профиль   Адрес электронной почты  

зачем наследовать от Frame ?

ну например для группировки. но здесь объект в любом случае группирует свое содержимое в отдельную область видимости и в “модуль”. однако лутц в большинстве примеров зачем то всё таки наследование использует. это мне не понятно

Офлайн

#4 Янв. 26, 2014 19:49:14

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

зачем наследовать от Frame ?

Вы можете одной строкой отключить отображение объекта. А указать ему размещение среди других объектов используя стандартный менеджер геометрии?

Офлайн

#5 Янв. 29, 2014 15:00:23

zlodiak
От: Россия
Зарегистрирован: 2014-01-19
Сообщения: 159
Репутация: +  0  -
Профиль   Адрес электронной почты  

зачем наследовать от Frame ?

4kpt_II
Вы можете одной строкой отключить отображение объекта. А указать ему размещение среди других объектов используя стандартный менеджер геометрии?

вот код, который делает то, о чём вы сказали выше. причём без наследования
import tkinter
 
class But_print():
     def __init__(self, parent):
          self.but = tkinter.Button(parent, text = 'press me', command = lambda: self.press(parent))
          self.but.pack()
          
     def press(self, parent):
          parent.destroy()
 
root = tkinter.Tk()
root2 = tkinter.Tk()
obj = But_print(root)
obj2 = But_print(root2)
root.mainloop()

поэтому я так и не разобрался зачем нужно наследовать от Frame или подобных классов виджетов

Отредактировано zlodiak (Янв. 29, 2014 15:06:32)

Офлайн

#6 Янв. 29, 2014 15:10:27

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

зачем наследовать от Frame ?

Забейте. Вы не поняли о чем я.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version