python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择


Posted in Python onFebruary 26, 2020

PyQt中MainWindow, QWidget以及Dialog的区别和选择

1. Qt界面分类

在Qt Designer设计界面时,首先需要选择界面模板,主要分为三个类:

  1. Main Window
  2. Widget
  3. Dialog

2. 三种模板的区别(官方文档介绍)

MainWindow

QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。

主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。我们将简要地回顾一下有关添加菜单项和工具条按钮,然后描述QMainWindow自己的便捷。

Widget

QWidget类是所有用户界面对象的基类。

窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButton、QListBox和QTabDialog等等。

Dialog

QDialog是最普通的顶级窗口。

不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。

一个没有父窗口部件的窗口部件一直是顶级窗口部件。

3. 如何选择QMainWindow,QWidget,QDialog

大致理解是:

QMainWindow是完整的窗体,在window上可以加入widget,适合于完整的项目,因为它封装了toolbar,statusbar,central widget,docking area。

QWidget是raw widget,widget也可以容纳其他的widget,但是注意setCentralWidget是只能由mainwindow类调用的。

QDialog派生自QWidget,是顶级窗口,功能也最基础。

所以功能上QMainWindow > QWidget > QDialog

4. 在PyQt中初始化类的区别

QMainWindow

from test.py import Ui_MainWindow #通过pyuic产生的test.py中生成类
class mywindow(QMainWindow,Ui_MainWindow):
  def __init__(self,parent = None):
    super(mywindow,self).__init__(parent)
    self.setupUi(self)

QWidget

from test import Ui_Widget 
from PyQt5 import QtWidgets

class mywindow(QtWidgets.QWidget,Ui_Widget):
  def __init__(self,parent = None):
    super(mywindow,self).__init__(parent)
    self.setupUi(self)

本文主要分析介绍了python GUI库图形界面开发PyQt5中QMainWindow, QWidget以及QDialog的区别和怎样选择选择,更多关于python GUI库图形界面开发PyQt5开发请查看下面的相关链接

Python 相关文章推荐
Python getopt模块处理命令行选项实例
May 13 Python
Python同时向控制台和文件输出日志logging的方法
May 26 Python
Django实现自定义404,500页面教程
Mar 26 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Django中的模型类设计及展示示例详解
May 29 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
Python修改DBF文件指定列
Dec 19 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 #Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 #Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 #Python
基于Python数据结构之递归与回溯搜索
Feb 26 #Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 #Python
Python基于Dlib的人脸识别系统的实现
Feb 26 #Python
python 回溯法模板详解
Feb 26 #Python
You might like
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
在Python中使用元类的教程
2015/04/28 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python决策树之CART分类回归树详解
2017/12/20 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
使用Python pip怎么升级pip
2020/08/11 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
机电一体化自荐信
2013/12/10 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
六一亲子活动总结
2014/07/01 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL