0
我刚开始尝试构建简单的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()
顺便说一句,我真的很欣赏评论家在这个简单的脚本编码的方式。我现在开始使用图形用户界面,我想以最可能的pythonic方式开始。谢谢大家!
考虑像这样连接信号和插槽:'self.bClose.clicked.connect(self.close)'。 [** here **](http://qt-project.org/wiki/Signals_and_Slots_in_PySide)是一个很好的文档。 –