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正则表达式教程之二:捕获篇
Mar 02 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python面向对象法实现图书管理系统
Apr 19 Python
Python Flask框架模板操作实例分析
May 03 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
Python如何实现动态数组
Nov 02 Python
python set集合使用方法解析
Nov 05 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
Python子进程subpocess原理及用法解析
Jul 16 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中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
php实用代码片段整理
2016/11/12 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
pymysql模块的操作实例
2019/12/17 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
初中科学教学反思
2014/01/21 职场文书
运动会致辞稿50字
2014/02/04 职场文书
临床专业自荐信
2014/06/22 职场文书
争先创优演讲稿
2014/09/15 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
Python基础之条件语句详解
2021/06/16 Python