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)是一個很好的文檔。 –