私はいつもコマンドラインスクリプトを使用していて、もっと調べたいと思っていたので、単純なGUIを作成しようとし始めました。PyQt4とPython3の両方の最新バージョンを使用しています。
問題は、以下のコードを考えると、最初のウィンドウのボタンをクリックすると、2番目のウィンドウが表示されないことですが、理由がわかりません。私は何が欠けていますか?スクリプトは完全に機能しているので(もちろん、2番目のウィンドウ部分を除く)、それを試すのはコピー/貼り付けだけです。
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から始めており、可能な限り最もPython的な方法で始めたいと思います。皆さんありがとう!