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字符串替换的2种方法
Nov 30 Python
浅析Python中的for 循环
Jun 09 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python restful框架接口开发实现
Apr 13 Python
python如何编写win程序
Jun 08 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 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函数
2006/10/09 PHP
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
nginx下安装php7+php5
2016/07/31 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
vue的路由映射问题及解决方案
2019/10/14 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
python小白切忌乱用表达式
2020/05/29 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
单位门卫岗位职责
2013/12/20 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
教师现实表现材料
2014/02/14 职场文书
预备党员转正考核材料
2014/06/03 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers