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 相关文章推荐
python3+PyQt5实现文档打印功能
Apr 24 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
python 画函数曲线示例
Dec 04 Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
浅谈python出错时traceback的解读
Jul 15 Python
python实现数字炸弹游戏程序
Jul 17 Python
django教程如何自学
Jul 31 Python
Python 连接 MySQL 的几种方法
Sep 09 Python
python 自动刷新网页的两种方法
Apr 20 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP网站备份程序代码分享
2011/06/10 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php中stdClass的用法分析
2015/02/27 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
原生js实现自定义滚动条
2021/01/20 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python自动发送邮件脚本
2018/06/20 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python的in,is和id函数代码实例
2020/04/18 Python
精彩的推荐信范文
2013/11/26 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL