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爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python类属性的延迟计算
Oct 22 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Python 基础教程之包和类的用法
Feb 23 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python学习小技巧总结
Jun 10 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
深入探讨opencv图像矫正算法实战
May 21 Python
python 中的jieba分词库
Nov 23 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设计模式 Composite (组合模式)
2011/06/26 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP实现微信发红包程序
2015/08/24 PHP
各种快递查询--Api接口
2016/04/26 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python 实现生成均匀分布的点
2019/12/05 Python
pytorch构建多模型实例
2020/01/15 Python
python打开音乐文件的实例方法
2020/07/21 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
分层教学实施方案
2014/03/19 职场文书
租赁意向书范本
2014/04/01 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
办公室主任个人总结
2015/02/28 职场文书
台风停课通知
2015/04/24 职场文书
create-react-app开发常用配置教程
2022/06/25 Javascript