0

我正在为一项任务编写一个 Tkinter GUI,并且在访问类方法时遇到了一些问题。我在这里粘贴的第一段代码是顶级接口类。代码的主要功能创建了这个类的一个实例,其中“master”是和 Tk() 的实例。

class PlotApp(object):
    """
    Top level interface. Contains canvas and other widgets.
    """

    def __init__(self, master):

        # Initialise variables, world screen class and window features
        master.wm_minsize(740, 480)
        master.configure(bg = "gray80")
        self.isFunctionDrawn = False           

        # Create objects
        self.pointf = PointFrame(master)
        self.canvas = Canvas(master, bg = "white", bd = 2, relief = SUNKEN,
                             highlightbackground = "gray80")
        self.canvas.pack(expand = True, fill = BOTH, padx = 10, side = TOP)
        self.functionf = FunctionFrame(master)
        self.plotf = PlotFrame(master)
        self.buttonf = ButtonFrame(master, self.canvas)

self.functionf是我的FunctionFrame类的一个实例,其中包含一个名为getFunction(). 我想要类实例中的一个按钮ButtonFrame来访问这个方法,但我不知道该怎么做。我试过了:

def testFunction(self):
    self.parent.functionf.getFunction()

(代码的第一位中parentmaster参数在哪里)但这似乎是functionf作为 的对象调用的Tk(),这显然是行不通的。有没有办法解决?

4

1 回答 1

0

master 是您的 Tk() 实例。仅仅因为您parent在 ButtonFrame 类中调用了变量并不意味着它是创建实例的对象。

您需要selfPlotApp作为父级传入(如果您需要master在 ButtonFrame 中使用对象,请将 master 保存在类似self.masterin 中PlotApp),或者您还需要将PlotApp实例的self变量传递给ButtonFrame.

于 2013-05-06T12:21:43.123 回答