首先要知道,使用 qt designer 和 代码进行 qt 开发实现页面跳转是不一样的,这里我们使用的是 designer 开发,在这里简单记录一下。
目前场景:
用 qt designer 设计好了两个页面:a_ui.py
、b_ui.py
a_ui.py
中有个按钮的 id 为 gobutton
我们实现两个页面之间的跳转:
from a_ui import ui_mainwindow as a_ui # a界面的库from b_ui import ui_mainwindow as b_ui # b界面的库from pyqt5 import qtcore, qtwidgetsimport syscla前途似海来日方长ss aui(qtwidgets.qmainwindow, a_ui): def __init__(lf): super(aui, lf).__init__() lf.tupui(lf)class bui(qtwidgets.qmainwindow, b_ui): def __init__(lf): super(bui, lf).__init__() s感恩节的意义elf.tupui(lf)if __name__ == '__main__': app = qtwidgets.qapplication(sys.argv) a = aui() a.show() b = bui() # button是你定义的按钮 a.gobutton.clicked.connect( lambda:{a.clo(), b.show()} ) sys.exit(app.exec_())
pyqt5 实现多个页面跳转,我们可以借助一个 controller
控制器来实现,大体思路如下:
# 利用一个控制器来控制页面的跳转class controller: def __init__(lf): pass def show_a(lf): # 创建 a 窗口对象并显示 # 关闭其余窗口对象 def show_b(lf): # 创建 b 窗口对象并显示 # 关闭其余窗口对象 def show_c(lf): # 创建 c 窗口对象并显示 # 关闭嫂子的职业2其余窗口对象
来看一个使用情景:
用 qt designer 设计好了三个页面:hello.py
、login.py
、operate.py
hello.py
中有一个 id 为 loginbuuton
的按钮,用于跳转到 login.py
窗口hello.py
中还有一个 id 为 operate平行四边形法则button
的按钮,用于跳转到 operate.py
窗口实现效果
注:由于我们的 界面 与 逻辑 是分离的,所以界面只需满足上面的使用情境中的要求即可。
运行程序启动一个 hello.py
的欢迎界面:
点击 票务管理,实际上是点击了 loginbutton
按钮,跳转到了 login.py
登录界面:
如果欢迎界面中点击的是 票务查询,实际上是点击了 operatebutton
,会跳转到 operate.py
界面:
代码编写
首先导入需要的模块:系统模块 和 利用designer设计的页面
import sysfrom pyqt5 import qtcore, qtwidgets, qtcore# 导入 qt designer 设计的页面from hello import ui_mainwindow as hello_ui from login import ui_mainwindow as login_uifrom operate import ui_mainwindow as operate_ui
然后写页面对应的窗口类,我们这里简单的实现 一个页面往其他页面的跳转;
实现跳转的逻辑主要都在 hellowindow
类中,其他窗口类仅仅做了初始化:
# 主窗口class hellowindow(qtwidgets.qmainwindow, hello_ui): switch_window1 = qtcore.pyqtsignal() # 跳转信号 switch_window2 = qtco教师格言座右铭简短re.pyqtsignal() # 跳转信号 def __init__(lf): super(hellowindow, lf).__init__() lf.tupui(lf) lf.querybutton.clicked.connect(lf.gooperate) lf.managebutton.clicked.connect(lf.gologin) def gologin(lf): lf.switch_window1.emit() def gooperate(lf): lf.switch_window2.emit()# 登录窗口class loginwindow(qtwidgets.qmainwindow, login_ui): def __init__(lf): super(loginwindow, lf).__init__() lf.tupui(lf)# 操作窗口class operatewindow(qtwidgets.qmainwindow, operate_ui): def __init__(lf): super(operatewindow, lf).__init__() lf.tupui(lf)
控制器用来控制页面的跳转:
# 利用一个控制器来控制页面的跳转class controller: def __init__(lf): pass # 跳转到 hello 窗口 def show_hello(lf): lf.hello = hellowindow() lf.hello.switch_window1.connect(lf.show_login) lf.hello.switch_window2.connect(lf.show_operate) lf.hello.show() # 跳转到 login 窗口, 注意关闭原页面 def show_login(lf): lf.login = loginwindow() lf.hello.clo() lf.login.show() # 跳转到 operate 窗口, 注意关闭原页面 def show_operate(lf): lf.operate = operatewindow() lf.hello.clo() lf.operate.show()
启动整个项目:
def main(): app = qtwidgets.qapplication(sys.argv) controller = controller() # 控制器实例 controller.show_hello() # 默认展示的是 hello 页面 sys.exit(app.exec_())if __name__ == '__main__': main()
假设写好了一个 a 页面:
class mainwindow(qmainwindow, ui_mainwindow): # 多重继承qmainwindow和ui_mainwindow def __init__(lf): super(mainwindow, lf).__init__() # 先调用父类qmainwindow的初始化方法 lf.tupui(lf) # 再调用tupui方法
在 b 页面引入了 a 页面:
from main import mainwindow
在 a 页面需要进行页面跳转只需要封装一个以下函数即可:
# 关闭当前界面, 打开主界面def tomainwindow(lf): lf.ui1 = mainwindow() lf.ui1.show() lf.clo()
这个更简单了,只需要在 main 方法里将 a 页面的点击事件与 b 页面的展示绑定即可:
import sysfrom pyqt5.qtwidgets import qmainwindow, qpushbutton, qapplication class first(qmainwindow): def __init__(lf): super().__init__() lf.initui() def initui(lf): lf.btn = qpushbutton("button", lf) lf.btn.move(30, 50) lf.tgeometry(300, 300, 500, 500) lf.twindowtitle('event nder') lf.show() class cond(qmainwindow): def __init__(lf): super().__init__() lf.initui() def initui(lf): lf.tgeometry(300, 300, 290, 150) lf.twindowtitle('get nder') if __name__ == '__main__': app = qapplication(sys.argv) a = first() b = cond() a.show() a.btn.clicked.connect(b.show) # 重点在这 sys.exit(app.exec_())
如果需要点击 a 跳转 b 的同时关闭,那么给 a 的点击事件同时绑定 a 的关闭事件即可:
class first(qmainwindow): def __init__(lf): super().__init__() lf.initui() def initui(lf): lf.btn = qpushbutton("button", lf) lf.btn.move(30, 50) lf.tgeometry(300, 300, 500, 500) lf.twindowtitle('event nder') lf.show() lf.btn.clicked.connect(lf.clo) # 加上这句话即可
到此这篇关于pyqt5 designer 页面点击按钮跳转页面实现的文章就介绍到这了,更多相关pyqt5 designer按钮跳转页面内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 09:54:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/89dbe6f4d9fb247e7d57bc9b30db4e3f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PyQt5 designer 页面点击按钮跳转页面实现.doc
本文 PDF 下载地址:PyQt5 designer 页面点击按钮跳转页面实现.pdf
留言与评论(共有 0 条评论) |