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中由于logging模块误用导致的内存泄露
Apr 23 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
python re模块的高级用法详解
Jun 06 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python中的函数递归和迭代原理解析
Nov 14 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 Python
PYTHON InceptionV3模型的复现详解
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中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
php语法检查的方法总结
2019/01/21 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python自动连接ssh的方法
2015/03/07 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
python多任务之协程的使用详解
2019/08/26 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL