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字符转换
Sep 06 Python
python zip文件 压缩
Dec 24 Python
Python实现的彩票机选器实例
Jun 17 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
python中count函数知识点浅析
Dec 17 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 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类的自动载入机制
2016/09/16 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
React组件的三种写法总结
2017/01/12 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python异常处理操作实例详解
2018/05/10 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
python实现数字炸弹游戏
2020/07/17 Python
python设置中文界面实例方法
2020/10/27 Python
python实现双人五子棋(终端版)
2020/12/30 Python
实体的生命周期
2013/08/31 面试题
财务经理岗位职责
2013/11/09 职场文书
生产管理的三大手法
2013/11/11 职场文书
科研先进个人典型材料
2014/01/31 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
工作能力自我评价2015
2015/03/05 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python