概念
窗口是一个实例对象,通过
win = UIForm()#窗口格式类
win.show
来创建,要实现窗口切换或者弹窗,只需要通过 .show() 和 .hide() 方法实现对当前跟新窗口的显示隐藏即可。
完整代码
这里是使用了一个按钮添加的点击事件来触发窗口切换,也可以设置成鼠标移入移出时间,来实现弹窗(类似QQ资料栏)
import sys # 导入系统
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton
class FirstUi(QMainWindow): # 第一个窗口类
def __init__(self):
super(FirstUi, self).__init__()
self.init_ui()
def init_ui(self):
self.resize(300, 200) # 设置窗口大小
self.setWindowTitle('First Ui') # 设置窗口标题
self.btn = QPushButton('jump', self) # 设置按钮和按钮名称
self.btn.setGeometry(50, 100, 100, 50) # 前面是按钮左上角坐标,后面是窗口大小
self.btn.clicked.connect(self.slot_btn_function) # 将信号连接到槽
def slot_btn_function(self):
self.hide() # 隐藏此窗口
self.s = SecondUi() # 创建第二个窗口实例
self.s.show() # 经第二个窗口显示出来
class SecondUi(QWidget): # 建立第二个窗口的类
def __init__(self):
super(SecondUi, self).__init__()
self.init_ui()
def init_ui(self):
self.resize(500, 350) # 设置第二个窗口代码
self.setWindowTitle('Second Ui') # 设置第二个窗口标题
self.btn = QPushButton('jump', self) # 设置按钮和按钮名称
self.btn.setGeometry(150, 150, 100, 50) # 前面是按钮左上角坐标,后面是按钮大小
self.btn.clicked.connect(self.slot_btn_function) # 将信号连接到槽
def slot_btn_function(self):
self.hide() # 隐藏此窗口
self.f = FirstUi() # 将第一个窗口换个名字
self.f.show() # 将第一个窗口显示出来
if __name__ == '__main__':
app = QApplication(sys.argv)
w = FirstUi() # 将第一和窗口换个名字
w.show() # 将第一和窗口换个名字显示出来
sys.exit(app.exec_()) # app.exet_()是指程序一直循环运行直到主窗口被关闭终止进程(如果没有这句话,程序运行时会一闪而过)