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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
python3中int(整型)的使用教程
Mar 23 Python
机器学习python实战之决策树
Nov 01 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
python计算两个地址之间的距离方法
Jun 09 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
python 5个实用的技巧
Sep 27 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
初品cakephp 入门基础
2012/02/16 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
零基础php编程好学吗
2019/10/11 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
python append、extend与insert的区别
2016/10/13 Python
Python与R语言的简要对比
2017/11/14 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
pytorch 模型可视化的例子
2019/08/17 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
建筑学推荐信
2013/11/03 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
学校重阳节活动总结
2015/03/24 职场文书
冰雪公主观后感
2015/06/16 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
golang内置函数len的小技巧
2021/07/25 Golang