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()
所以我正在为我的 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()