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实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
详解python tkinter教程-事件绑定
Mar 28 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
python+django+rest框架配置创建方法
Aug 31 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
Django限制API访问频率常用方法解析
Oct 12 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
python中HTMLParser模块知识点总结
Jan 25 Python
python-for x in range的用法(注意要点、细节)
May 10 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学习笔记之二
2011/01/17 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
动态加载script文件的两种方法
2013/08/15 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
python操作MongoDB基础知识
2013/11/01 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
三个儿子教学反思
2014/02/03 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
实习生工作证明范本
2014/09/14 职场文书
上班迟到检讨书
2014/09/15 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers
windows系统安装配置nginx环境
2022/06/28 Servers