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运行的17个时新手常见错误小结
Aug 07 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python3.7中安装openCV库的方法
Jul 11 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
python实现飞机大战小游戏
Nov 08 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Python生成九宫格图片的示例代码
Apr 14 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
php命令行模式代码实例详解
2021/02/26 PHP
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
使用JS动态显示文本
2017/09/09 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python同步windows和linux文件
2019/08/29 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
什么是GWT的Module
2013/01/20 面试题
后勤岗位职责
2013/11/26 职场文书
上课迟到检讨书
2014/01/19 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
武当山导游词
2015/02/03 职场文书
综治目标管理责任书
2015/05/11 职场文书
企业培训简报范文
2015/07/20 职场文书
校长新学期寄语2016
2015/12/04 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
Python制作春联的示例代码
2022/01/22 Python
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers