0

私はいつもコマンドラインスクリプトを使用していて、もっと調べたいと思っていたので、単純な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的な方法で始めたいと思います。皆さんありがとう!

4

1 に答える 1

0

エラー出力を確認できるように、必ずコンソールでアプリケーションを実行してください。

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

そして確かに、showSecond:no self!の宣言にエラーがあります。このようにする必要があります:

    def showSecond(self):
于 2012-06-15T10:19:24.913 に答える