python - 从另一个类调用类变量

时间:2014-10-29 21:58:23

标签: python pyside

我正在研究类并尝试在我的PySide GUI中开始工作setCentralWidget()。 我有一个MainWindow和两个小部件:mainWidget和searchWidget,我想在点击searchButton后显示一个小部件。

class MainWindow(QMainWindow):

    def __init__(self):

        super(MainWindow,self).__init__()        
        self.initUI()

    def initUI(self):

        mainWidget = MainWidget()

        self.resize(300,500)
        self.statusBar()
        self.statusBar().showMessage('Elo Elo')
        self.setCentralWidget(mainWidget)   # <---- setting centralWidget first time
        self.setWindowTitle('StartApp Welcome')

和searchWidget()

class SearchWidget(QWidget):

    def __init__(self, parent=MainWindow):

        super(SearchWidget,self).__init__()
        self.initUI()

    def initUI(self):       

        backButton = QPushButton('GoBack', self)
        backButton.clicked.connect(self.goBack)

    def goBack(self):

        self.parent().setCentralWidget(self.parent().mainWidget)  # <--- error line

错误

AttributeError: 'MainWindow' object has no attribute 'mainWidget'

我无法弄清楚,如何访问MainWidget()实例&#39; mainWidget&#39;。你能以某种方式帮助我吗?感谢

1 个答案:

答案 0 :(得分:0)

这是因为在这一行:

self.parent().setCentralWidget(self.parent().mainWidget)

您尝试访问变量mainWidget,就好像它是MainWindow属性 - 它不是(目前它只是一个局部变量)。这是因为您没有将其初始化为self.mainWidget,您必须这样做才能让它像您希望的那样工作。

self.mainwidget = MainWidget()