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中的pydoc模块和distutils模块
Apr 13 Python
Python while 循环使用的简单实例
Jun 08 Python
Python SQLite3简介
Feb 22 Python
解决Python安装后pip不能用的问题
Jun 12 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
python3利用Socket实现通信的方法示例
May 06 Python
python能做什么 python的含义
Oct 12 Python
python中自带的三个装饰器的实现
Nov 08 Python
python如何导出微信公众号文章方法详解
Aug 31 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
PHP4引用文件语句的对比
2006/10/09 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
python求pi的方法
2014/10/08 Python
Python中有趣在__call__函数
2015/06/21 Python
Python3 Random模块代码详解
2017/12/04 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
python实现简单名片管理系统
2018/11/30 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
思想汇报范文
2013/11/04 职场文书
经典演讲稿范文
2013/12/30 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
2021年最新用于图像处理的Python库总结
2021/06/15 Python
python中Matplotlib绘制直线的实例代码
2021/07/04 Python