簡體   English   中英

從頂級控件類中的Frame類繼承方法

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

當前,我需要從ttk.Frame類訪問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

所以,差不多,我想做的是:

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

您需要一個沼澤標准對象,而不是繼承對象。

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