如何在Python中调用来自不同类的函数

时间:2012-10-26 18:28:30

标签: python oop

我有一个Python程序的大纲(使用PyQt4):

class Polygon( QtGui.QGraphicsItem ):

    def __init__(self):
        super(Polygon, self).__init__()

    def addpoint( self, point ):
        if last_point: 
            # trying to add auto-save here

class MainWidget(QtGui.QWidget):

    openFileName = ""
    list_of_polygons = []

    def __init__(self):
        super(MainWidget, self).__init__()

    def openFile( self ):
        call dialog
        self.openFileName = ...

    def saveFile( self ):
        # needs to access a couple something with self.variables, like self.openFileName


def main():

    app = QtGui.QApplication(sys.argv)
    ex = MainWidget()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

功能是一个图像查看器,我在这里创建多边形以标记对象。一旦创建了多边形,我想调用自动保存。

因此,为了保存多边形,我需要从saveFile函数MainWidget类调用它。我的问题是保存功能是在MainWidget类中实现的,我不知道如何从Polygon类中访问它们。

这样做最好的主意是什么?我应该将saveFile设为全局吗?如果是,那么我如何访问自己。 MainWidget的变量?

1 个答案:

答案 0 :(得分:2)

您可能需要在创建它时将窗口小部件对象传递给多边形,以便它知道它的“父”窗口小部件对象是什么:

class Polygon( QtGui.QGraphicsItem ):

    def __init__(self, parent):
        self.parent = parent
        # ...

(然后在创建时foo = Polygon(your_widget))。


然后你可以打电话给self.parent.saveFile(...)或其他什么。