PyQt4:如何通过单击按钮从一个 window 切换到另一个

PyQt4: How do I switch from one window to another on a click of a button

所以我正在为我的 python class 构建一个 "TeacherPortal",老师希望我们通过单击一个专门使用 PyQt4 的按钮转到另一个 window。我环顾四周,但我只发现了 PyQt5,我对 GUI 还是很陌生

我尝试创建 2 个不同的 classes,一个用于主要 window,另一个用于第二个 window(它们是分开的 classes),我放一个链接到另一个的按钮 class 但它不起作用

from PyQt4 import QtGui, QtCore
import sys

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window,self).__init__()
        self.setWindowTitle("TeahcherPortal")
        self.setGeometry(50,50,800,600)

        self.FirstWindow()

    def FirstWindow(self):
        btn = QtGui.QPushButton("Login",self)
        btn.clicked.connect(SecondPage())
        btn.move(400,300)

        self.show()

class SecondPage(QtGui.QMainWindow):
    def __init__(self):
        super(SecondPage,self).__init__()
        self.setGeometry(50,50,800,600)



def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    Page = SecondPage()
    sys.exit(app.exec_())

run()

我预计它会转到另一个 window 但这并没有发生,很遗憾。 但是发生的是我得到一个错误 TypeError: connect() slot argument should be a callable or a signal, not 'SecondPage'

试一试:

import sys
# PyQt5
from PyQt5.QtCore    import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui     import *

# PyQt4
#from PyQt4.QtCore    import *
#from PyQt4.QtGui     import *

class Window(QMainWindow):
    def __init__(self):
        super(Window,self).__init__()
        self.setWindowTitle("TeahcherPortal")
        self.setGeometry(50,50,800,600)

        self.FirstWindow()

    def FirstWindow(self):
        btn = QPushButton("Login", self)
        btn.clicked.connect(self.secondPage)    # - (SecondPage())
        btn.move(400,300)

        self.show()

    def secondPage(self):                       # +++
        self.secondWindow = SecondPage()
        self.secondWindow.show()

class SecondPage(QMainWindow):     
    def __init__(self):
        super(SecondPage,self).__init__()
        self.setWindowTitle("SecondPage")
        self.setGeometry(50,50,800,600)


def run():
    app = QApplication(sys.argv)
    GUI = Window()
    Page = SecondPage()
    sys.exit(app.exec_())

run()