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映射列表实例分析
Jan 26 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
分析Python中解析构建数据知识
Jan 20 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
Python 移动光标位置的方法
Jan 20 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
python基于SMTP协议发送邮件
May 31 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
Django使用rest_framework写出API
May 21 Python
Python字典dict常用方法函数实例
Nov 09 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
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php微信开发之上传临时素材
2016/06/24 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
python实现文件路径和url相互转换的方法
2015/07/06 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
python set集合使用方法解析
2019/11/05 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Yahoo-PHP面试题4
2012/05/05 面试题
市场营销管理制度
2014/01/29 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
研究生导师推荐信
2014/09/06 职场文书
实习协议书
2015/01/27 职场文书
同学聚会通知短信
2015/04/20 职场文书
医院志愿者活动总结
2015/05/06 职场文书
详解python网络进程
2021/06/15 Python
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers