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正则表达式 re模块使用说明
May 19 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
Python端口扫描简单程序
Nov 10 Python
Python enumerate索引迭代代码解析
Jan 19 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python实现转换图片背景颜色代码
Apr 30 Python
如何通过python计算圆周率PI
Nov 11 Python
python某漫画app逆向
Mar 31 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
Python实现科学占卜 让视频自动打码
Apr 09 Python
Python闭包的定义和使用方法
Apr 11 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
一个用于MySQL的PHP XML类
2006/10/09 PHP
Laravel 5 学习笔记
2015/03/06 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
vue--vuex详解
2019/04/15 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python 布尔操作实现代码
2013/03/23 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
css3 transform属性详解
2014/09/30 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
护理学专业推荐信
2013/12/03 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
结婚仪式主持词
2015/06/29 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
毕业班工作总结
2015/08/10 职场文书
深入浅析Django MTV模式
2021/09/04 Python
js不常见操作运算符总结
2021/11/20 Javascript