按下按钮时不显示第二个窗口

时间:2012-06-15 10:09:19

标签: python-3.x pyqt4

我刚开始尝试构建简单的GUI,因为我一直使用命令行脚本,并希望探索更多。我正在使用PyQt4和Python 3的最新版本。

问题在于,根据下面的代码,单击第一个窗口中的按钮,第二个窗口不会显示,但我无法理解。我错过了什么?该脚本功能齐全(当然,除了第二个窗口部分),所以它只是一个复制/粘贴来尝试。

import sys
from PyQt4 import QtCore, QtGui

class GreetWindow(QtGui.QMainWindow):
    def __init__(self):
        # main init
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('File Checker!')
        self.centralWidget = QtGui.QWidget()
        self.tLabel = QtGui.QLabel('Hello, and welcome! Please, close me!', self.centralWidget)
        self.bClose = QtGui.QPushButton('Close', self.centralWidget)
        # layout
        self.lVBox = QtGui.QVBoxLayout()
        self.lVBox.setSpacing(2)
        self.lVBox.addWidget(self.tLabel)
        self.lVBox.addWidget(self.bClose)
        # signal connections
        self.connect(self.bClose, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('close()'))
        self.connect(self.bClose, QtCore.SIGNAL('clicked()'), self.showSecond)
        # layout combination
        self.centralWidget.setLayout(self.lVBox)
        self.setCentralWidget(self.centralWidget)
    def showSecond():
        self.theSecond = SecondWindow()
        self.theSecond.show()

class SecondWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('This is the second!')
        self.centralWidget = QtGui.QLabel('Mission accomplished')
        self.setCentralWidget(self.centralWidget)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = GreetWindow()
    ex.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
不过,我非常感谢评论这个简单脚本编码的方式。我现在开始使用GUI,我想以尽可能最pythonic的方式开始。谢谢大家!

1 个答案:

答案 0 :(得分:0)

确保在控制台中运行您的应用程序,以便您可以看到错误输出:

TypeError: showSecond() takes no arguments (1 given)

事实上,showSecond声明中有错误:没有self!应该是这样的:

    def showSecond(self):