Наследование методов из класса Frame в классе виджетов верхнего уровня - PullRequest
0 голосов
/ 10 ноября 2018

В настоящее время мне нужно получить доступ к методам и переменным экземпляра в классе toplevel из класса ttk.Frame; программа вычисляет определенные значения внутри класса ttk.Frame, затем я хочу использовать некоторые функции, использованные для вычисления этих предыдущих значений из ttk.Frame в toplevel.

class ReservoirDataFrame(ttk.Frame):
    def __init__(self, parent, controller):
        ttk.Frame.__init__(self, parent)
        self.controller = controller
        self.grid(row=0, column=0, sticky="nsew")
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.main()
        ...
    def main(self):
        pass
    def fluid_properties_calculate(self):
        pass

Итак, в значительной степени я хочу иметь что-то вроде:

class CurveIPR(tk.Toplevel, ReservoirDataFrame):
    def __init__(self, controller):
        tk.Toplevel.__init__(self, controller)
        ReservoirDataFrame.__init__(self, controller)
        self.controller = controller
        self.reservoir_data_frame = ReservoirDataFrame(self)
        self.minsize(600, 480)
        self.title("Curva de oferta IPR (Inflow performance relationship)")
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.grab_set()
        self.main()

    def main(self):
        self.reservoir_data_frame.fluid_properties_calculate()

1 Ответ

0 голосов
/ 10 ноября 2018

Вам нужен стандартный болотный объект, а не наследование.

class CurveIPR(tk.Toplevel):
    def __init__(self, controller):
        tk.Toplevel.__init__(self, controller)
        self.controller = controller
        self.reservoir_data_frame = ReservoirDataFrame(self, controller)
        # you really ought to grid it here, not in ReservoirDataFrame
        self.minsize(600, 480)
        self.title("Curva de oferta IPR (Inflow performance relationship)")
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.grab_set()
        self.main()

    def main(self):
        self.reservoir_data_frame.fluid_properties_calculate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...