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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python下载图片实现方法(超简单)
Jul 21 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
如何基于python操作json文件获取内容
Dec 24 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
python的变量和简单数字类型详解
Sep 15 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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版快速排序、冒泡排序
2014/04/09 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Python解析多帧dicom数据详解
2020/01/13 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
Python图像读写方法对比
2020/11/16 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
python多线程方法详解
2022/01/18 Python
一文弄懂MySQL索引创建原则
2022/02/28 MySQL