PyQt5 窗口切换与自定义对话框的实例


Posted in Python onJune 20, 2019

近日,需要实现一个功能小而全的桌面版软件,所以选中并尝试了PyQt5这个GUI库。在使用中发现,其功能的确完备,但这方面的资料的确不多,有时自己想实现的功能相关资料找不到,有的还不得不阅读C++的实现代码。PyQt5的文档也都是指向C++版的文档。一段时间做下来,特将有关解决方法记录下来,以将来备查,也随手帮助下后来者。

一般来说,GUI软件都是需要不同的工作界面之间进行切换的,当然也少不了布局等功能的使用。Qt的布局功能理解起来也很容易,使用的基本方法是:

1.建立容器部件;

2.建立布局类,并设置为容器部件的布局;

3.在布局类中添加其他部件。

如果有需要嵌套的,那就是以上步骤的第3条中添加容器部件,又回到第1步了。相信这也比较容易理解。

一个个工作界面都做好之后,如果让顶级多个部件在窗口中切换呢?为了这个方法,我捣鼓了不了时间。在查找QMainWindow类中查看方法,类的方法非常多,因为添加部件用的是setCentralWidget(),即自然想到会不会是removeCentralWidget(),另我惊奇的是没有!!最后,找到了takeCentralWidget()。(是他,是他,就是他……)

这样才明白了,要切换部件也很容易,就是先调用takeCentralWidget(),清楚原来的部件,再调用setCentralWidget()设置当前部件。

制作GUI界面,对话框自然是必不可少的。针对Qt5的,三水点靠木也有比如https://3water.com/article/163557.htm(PyQt5之弹出窗口大全),看着也很容易懂。可我需要实现一个可以填写两个数据的对话框,那就只有自定义了??∷凳祷埃?飧鲈谕?系淖试椿拐嫦∩佟W詈笠菜闶鞘迪至耍?浠?敬?肴缦拢ň咛褰馐图?⑹停??/p>

class MyDialog(QDialog):    #继承QDialog类
 def __init__(self):
  super().__init__()
  self.initUI()
  # self.exec()

 def initUI(self):
  self.setWindowTitle("新建小组")  # 窗口标题
  self.setGeometry(400,400,200,200) # 窗口位置与大小

  self.lab_a = QLabel('小组名称:')
  self.lab_b = QLabel('竞赛项目:')

  self.name_edit = QLineEdit()  # 用于接收用户输入的单行文本输入框
  self.game_item = QComboBox()  # 建立一个下拉列表框

  for g in get_games():    # 为下拉列表框添加选择项(从数据库中查询取得)
   self.game_item.addItem(g.name,g.id)

  self.buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) #窗口中建立确认和取消按钮

  self.glayout = QGridLayout()

  self.glayout.addWidget(self.lab_a,0,0)
  self.glayout.addWidget(self.lab_b,1,0)
  self.glayout.addWidget(self.name_edit,0,1)
  self.glayout.addWidget(self.game_item,1,1)

  self.glayout.addWidget(self.buttons,2,1)

  self.buttons.accepted.connect(self.accept)
  self.buttons.rejected.connect(self.reject)

  self.setLayout(self.glayout)

 def get_data(self):     # 定义获取用户输入数据的方法
  return self.name_edit.text(),self.game_item.itemData(self.game_item.currentIndex())

其使用方法也不难,代码实例如下:

v = MyDialog() # 建立对话框实例
if v.exec_(): # 执行方法,成为模态对话框,用户点击OK后,返回1
 name,game = v.get_data()

以上这篇PyQt5 窗口切换与自定义对话框的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中暂存上传图片的方法
Feb 18 Python
Python处理字符串之isspace()方法的使用
May 19 Python
Python算法应用实战之队列详解
Feb 04 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
详解python中eval函数的作用
Oct 22 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
通过代码实例了解Python异常本质
Sep 16 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
PyQt5笔记之弹出窗口大全
Jun 20 #Python
PyQt5创建一个新窗口的实例
Jun 20 #Python
pyQT5 实现窗体之间传值的示例
Jun 20 #Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 #Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 #Python
详解Python 调用C# dll库最简方法
Jun 20 #Python
python async with和async for的使用
Jun 20 #Python
You might like
php 动态执行带有参数的类方法
2009/04/10 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
python编辑用户登入界面的实现代码
2018/07/16 Python
python中的decorator的作用详解
2018/07/26 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python图像和办公文档处理总结
2019/05/28 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
pymysql模块使用简介与示例
2020/11/17 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
农民工工资发放承诺书
2014/03/31 职场文书
冬季施工防火方案
2014/05/17 职场文书
身边的榜样活动方案
2014/08/20 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS