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 を作成するときにウィジェット オブジェクトを 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 に答える