PyQt5 多窗口连接实例


Posted in Python onJune 19, 2019

前言

之前做过pyqt的一个简单界面,在一个窗口(MainWindow)中实现一些操作;之前嫌麻烦没有去做多窗口和它们的切换功能。最近研究了下窗口的调用和切换。

pyqt4和5有很多不同,在参考别人案例的时候走了很多弯路,最后在pyqt5下实现了简洁的多窗口切换为大家参考。

思路

多窗口的切换和显示连接到按钮的信号上再进行show()就行,格式上有别于pyqt4。

一个逻辑比较清晰的解决方案是,使用一个主程序,在其中实例化各个窗口,然后定义它们的显示逻辑即是按钮的槽函数。

格式上稍有不对就会报错,也是让我重新审视了一下python类和继承的语法= =

同时窗口的类型也和pyqt4有所不同,pyqt5下QWidgets为主,与4中QDialog显示方式也有所不同。

具体方式见代码。

代码

主程序——实例化各个窗口

from PyQt5 import QtCore, QtGui, QtWidgets
from test import Ui_Dialog
from Login import Ui_MainWindow_Login


class Ui_Dialog(QtWidgets.QWidget,Ui_Dialog):
  def __init__(self):
    super(Ui_Dialog,self).__init__()
    self.setupUi(self)
  #定义登出按钮的功能
  def logoutEvent(self):
    self.hide()      #隐藏此窗口
    self.log = loginWindow() 
    self.log.show()    #显示登录窗口
               #必须加上self

class loginWindow(QtWidgets.QMainWindow,Ui_MainWindow_Login):
  def __init__(self):
    super(loginWindow,self).__init__()
    self.setupUi(self)
  #定义登录按钮的功能
  def loginEvent(self):
    self.hide()
    self.dia = Ui_Dialog()
    self.dia.show()
    #self.dia.exec_()
    #pyqt5下show()方法有所改变,不再使用exec_()方法。

#运行窗口Login
if __name__=="__main__":
  import sys
  app=QtWidgets.QApplication(sys.argv)
  login_show=loginWindow()
  login_show.show()
  sys.exit(app.exec_())

多窗口

需要用到的多个窗口可以用Designer直接生成,主窗口实例化。在其中定义好信号连接即可

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow_Login(object):
  def setupUi(self, MainWindow_Login):
    #略
  def retranslateUi(self, MainWindow_Login):
    #略

if __name__=="__main__":
  import sys
  app=QtWidgets.QApplication(sys.argv)
  widget = QtWidgets.QMainWindow()
  login = Ui_MainWindow_Login()
  login.setupUi(widget)
  widget.show()
  sys.exit(app.exec_())

效果

PyQt5 多窗口连接实例

点击登陆:

PyQt5 多窗口连接实例

退出登录则返回到第一个窗口。

切换

理解好这个实例后,添加更多窗口都是线性复杂度的操作,在Designer中设计好窗口,直接转码后就可在主程序中实例化该窗口并设计它们的显示逻辑。

以上这篇PyQt5 多窗口连接实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python简单删除列表中相同元素的方法示例
Jun 12 Python
python的re正则表达式实例代码
Jan 24 Python
django manage.py扩展自定义命令方法
May 27 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
python的内存管理和垃圾回收机制详解
May 18 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
基于python调用psutil模块过程解析
Dec 20 Python
Python hmac模块使用实例解析
Dec 24 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python 键盘事件详解
Nov 11 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 #Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 #Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 #Python
python 读写excel文件操作示例【附源码下载】
Jun 19 #Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 #Python
网易有道2017内推编程题 洗牌(python)
Jun 19 #Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 #Python
You might like
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
javascript document.execCommand() 常用解析
2009/12/14 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
行政人事专员岗位职责
2014/03/05 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
商业计划书之服装
2019/09/09 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
SQL Server实现分页方法介绍
2022/03/16 SQL Server
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers