首页 > 作文

PyQt5 designer 页面点击按钮跳转页面实现

更新时间:2023-04-04 09:54:12 阅读: 评论:0

目录
使用 designer 进行开发pyqt5 实现两个页面跳转pyqt5 实现多个页面跳转补充:使用 designer 开发,页面跳转函数不使用 designer 的页面跳转

使用 designer 进行开发

首先要知道,使用 qt designer 和 代码进行 qt 开发实现页面跳转是不一样的,这里我们使用的是 designer 开发,在这里简单记录一下。

pyqt5 实现两个页面跳转

目前场景:

用 qt designer 设计好了两个页面:a_ui.pyb_ui.pya_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 实现多个页面跳转

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.pylogin.pyoperate.pyhello.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()

补充:使用 designer 开发,页面跳转函数

假设写好了一个 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()

不使用 designer 的页面跳转

这个更简单了,只需要在 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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图