简体   繁体   English

从顶级控件类中的Frame类继承方法

[英]Inheriting methods from a Frame Class, in a toplevel widget Class

Currently, I need to access the methods and instance variables in a toplevel class from a ttk.Frame class; 当前,我需要从ttk.Frame类访问toplevel类中的方法和实例变量。 the program calculates certain values inside the ttk.Frame class, then, I want to be able to use some of the functions used to calculate those previous values from the ttk.Frame , in the toplevel . 该程序将在ttk.Frame类中计算某些值,然后,我希望能够使用某些函数来从toplevelttk.Frame计算这些先前的值。

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

So, pretty much, what I want to be able to do is something like: 所以,差不多,我想做的是:

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()

You need a bog-standard object, not inheritance. 您需要一个沼泽标准对象,而不是继承对象。

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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM