我有一个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的变量?
答案 0 :(得分:2)
您可能需要在创建它时将窗口小部件对象传递给多边形,以便它知道它的“父”窗口小部件对象是什么:
class Polygon( QtGui.QGraphicsItem ):
def __init__(self, parent):
self.parent = parent
# ...
(然后在创建时foo = Polygon(your_widget)
)。
然后你可以打电话给self.parent.saveFile(...)
或其他什么。