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的Django框架中的模版相关知识
Jul 15 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
django 多数据库配置教程
May 30 Python
python实现整数的二进制循环移位
Mar 08 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
python版百度语音识别功能
Jul 09 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python sys模块常用方法解析
Feb 20 Python
Flask和pyecharts实现动态数据可视化
Feb 26 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 Class 文章
2007/04/04 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
Vue基于NUXT的SSR详解
2017/10/24 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
python实现决策树ID3算法的示例代码
2018/05/30 Python
Python 的AES加密与解密实现
2019/07/09 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Win2008系统搭建DHCP服务器
2022/06/25 Servers