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中的文件和目录操作实现代码
Mar 13 Python
python调用java的Webservice示例
Mar 10 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
itchat接口使用示例
Oct 23 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
Python安装Flask环境及简单应用示例
May 03 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
Python实现我的世界小游戏源代码
Mar 02 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 手机归属地查询 api
2010/02/08 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
php生成二维码
2015/08/10 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
python 读取文件并替换字段的实例
2018/07/12 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Django 自定义分页器的实现代码
2019/11/24 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
科技之星事迹材料
2014/06/02 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python