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中stdout输出不缓存的设置方法
May 29 Python
用Python实现一个简单的线程池
Apr 07 Python
Python切片工具pillow用法示例
Mar 30 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
Pandas读写CSV文件的方法示例
Mar 27 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Numpy一维线性插值函数的用法
Apr 22 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Django 用户认证Auth组件的使用
Nov 30 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 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开发框架的对比
2013/07/05 PHP
PHP基础知识介绍
2013/09/17 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
房地产财务部员工岗位职责
2014/03/12 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP