PyQt5中实现界面的跳转有很多方式,这里介绍一种点击按钮弹出新窗体的方法。
首先,创建两个简单新窗体代码文件,并在窗口A的一个按钮上设置一个信号槽,连接到跳转函数jump,使用jump函数跳转到窗口B。注意,设置你要跳转的窗口为Dialog类,只有使用Dialog类才能使用这种跳转方法。
核心代码
class MyWindow(QDialog):
def __init__(self):
super().__init__()
pass
self.btn.clicked.connect(self.jump)
pass
def jump(self):
child = DialogOfYouNeed()
child.exec_() # 阻塞显示,只有关闭子窗口才能返回父窗口
class DialogOfYouNeed(ChildDialogUi):
def __init__(self):
super().__init__()
# write down you logic code here
这种方式设置的跳转会把焦点设置为新跳出的窗口B上,只有关闭了窗口B才能回到窗口A。
范例代码
import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog, QHBoxLayout, QLabel
class MyWindow(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("MainWindow")
self.setWindowFlags(Qt.WindowCloseButtonHint)
layout = QHBoxLayout()
self.btn = QtWidgets.QPushButton(self)
self.btn.setText("Jump")
self.btn.clicked.connect(self.jump)
_1 = QLabel(self)
_1.setText(" " * 5)
_2 = QLabel(self)
_2.setText(" " * 5)
layout.addWidget(_1)
layout.addWidget(self.btn)
layout.addWidget(_2)
self.setLayout(layout)
def jump(self):
child = DialogOfYouNeed()
child.exec_()
class ChildDialogUi(QDialog):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.WindowCloseButtonHint)
layout = QHBoxLayout()
self.label = QLabel(self)
self.label.setText("This is child dialog.")
layout.addWidget(self.label)
self.setLayout(layout)
class DialogOfYouNeed(ChildDialogUi):
def __init__(self):
super().__init__()
# write down you logic code here
if __name__=='__main__':
app = QtWidgets.QApplication(sys.argv)
main = MyWindow()
main.show()
sys.exit(app.exec_())
如有错误欢迎指正。