1

我有以下 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 的变量?

4

1 回答 1

2

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

class Polygon( QtGui.QGraphicsItem ):

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

(然后foo = Polygon(your_widget)当你创建它时)。


然后你可以打电话self.parent.saveFile(...)或诸如此类。

于 2012-10-26T18:31:13.957 回答