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中利用sorted()函数排序的简单教程
Apr 27 Python
Python中特殊函数集锦
Jul 27 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
PyMongo 查询数据的实现
Jun 28 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
javascript知识点收藏
2007/02/22 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python sort、sort_index方法代码实例
2019/03/28 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
李培根演讲稿
2014/05/22 职场文书
2014和解协议书范文
2014/09/15 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
警用民用对讲机找不同
2022/02/18 无线电
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python