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实现的一个p2p文件传输实例
Jun 04 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
使用python实现mqtt的发布和订阅
May 05 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
基于python代码批量处理图片resize
Jun 04 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 Python
Python实现简单的2048小游戏
Mar 01 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
python和anaconda的区别
May 06 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
PHP实现的功能是显示8条基色色带
2006/10/09 PHP
坏狼的PHP学习教程之第1天
2008/06/15 PHP
三种php连接access数据库方法
2013/11/11 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
php curl发送请求实例方法
2019/08/01 PHP
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
JavaScript编写开发动态时钟
2020/07/29 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python导入模块时遇到的错误分析
2017/08/30 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
什么时候用assert
2015/05/08 面试题
旷课检讨书3000字
2014/02/04 职场文书
模范家庭事迹材料
2014/02/10 职场文书
人事专员工作职责
2014/02/22 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
Python装饰器的练习题
2021/11/23 Python