удаление частей метода суперкласса - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время я изучаю методы наследования и переопределения.Я был в состоянии добавить к определенному методу, но сейчас я пытаюсь удалить что-то из метода суперкласса.Точнее говоря, мой суперкласс - это класс Dialog от simpledialog от tkinter.Я хочу изменить метод buttonbox () в моем подклассе, чтобы кнопка отмены была скрыта или удалена.Я покажу метод ' init ' и метод buttonbox суперкласса Dialog:

class Dialog(Toplevel):

    def __init__(self, parent, title = None):
        Toplevel.__init__(self, parent)
        self.withdraw() 
        if parent.winfo_viewable():
            self.transient(parent)
        if title:
            self.title(title)
        self.parent = parent
        self.result = None
        body = Frame(self)
        self.initial_focus = self.body(body)
        body.pack(padx=5, pady=5)
        self.buttonbox()
        if not self.initial_focus:
            self.initial_focus = self
        self.protocol("WM_DELETE_WINDOW", self.cancel)
        if self.parent is not None:
            self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
                                  parent.winfo_rooty()+50))
        self.deiconify() # become visible now
        self.initial_focus.focus_set()
        self.wait_visibility()
        self.grab_set()
        self.wait_window(self)

    def buttonbox(self):
        box = Frame(self)
        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=LEFT, padx=5, pady=5)
        w = Button(box, text="Cancel", width=10, command=self.cancel)
        w.pack(side=LEFT, padx=5, pady=5)
        self.bind("<Return>", self.ok)
        self.bind("<Escape>", self.cancel)
        box.pack()

Так что теперь при создании моего подкласса я хочу наследовать суперкласс, но переопределить метод buttonbox так,что у меня есть только одна кнопка (кнопка с OK).

MyDialogClass(simpledialog.Dialog):
    def buttonbox(self):
        #code that will override the buttonbox method of superclass       

Как мне переопределить это?

1 Ответ

0 голосов
/ 15 февраля 2019

Уэлп, я попробовал и думаю, что нашел решение, теперь чувствую себя немного глупо.

MyDialogClass(simpledialog.Dialog):
    def buttonbox(self):
        box = tkinter.Frame(self)
        w = tkinter.Button(box, text="OK", width=10, command=self.ok, default="active")
        w.pack(side="left", padx=5, pady=5)
        self.bind("<Return>", self.ok)
        box.pack()

Моя главная проблема в начале заключалась в том, что я получил ошибку NameError при использовании "box =Frame (self) ", как сделал метод кнопки Superclass.Теперь, когда я использовал tkinter.Frame (self), это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...