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字符串和字典
Jul 07 Python
利用Python开发微信支付的注意事项
Aug 19 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python中shapefile转换geojson的示例
Jan 03 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
基于python实现把json数据转换成Excel表格
May 07 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
Python Selenium库的基本使用教程
Jan 04 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默认安装产生系统漏洞
2006/10/09 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python重要函数eval多种用法解析
2020/01/14 Python
python将音频进行变速的操作方法
2020/04/08 Python
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
销售经理工作职责范文
2013/12/03 职场文书
开学季活动策划方案
2014/02/28 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
领导干部对照检查材料
2014/08/24 职场文书
华山导游词
2015/02/03 职场文书
实习生个人总结范文
2015/02/28 职场文书
简爱读书笔记
2015/06/26 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS