python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
作者:Mengwei_Ren 发布时间:2022-04-22 01:39:50
PyQt中MainWindow, QWidget以及Dialog的区别和选择
1. Qt界面分类
在Qt Designer设计界面时,首先需要选择界面模板,主要分为三个类:
Main Window
Widget
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开发请查看下面的相关链接
来源:https://blog.csdn.net/Mengwei_Ren/article/details/71305885
猜你喜欢
- 用nodejs怎样来实现对微信公众平台的开发呢?别的就不多说了,先来简单介绍微信公众平台的基本原理。微信服务器就相当于一个转发服务器,终端(
- 蚊子今天下午搭了一主三从的mysql复制,结果所有服务器都配置好后,发现从上报如下的错误 Last_IO_Error: Fatal erro
- 我们使用 python setup.py install 来安装python包,但是如何卸载呢?只能手动删除安装的文件可以使用如下命令pyt
- 一、Python字符编码介绍1、须知:在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicodeunico
- 前言:网上找的地铁线路图大多数都不太清晰,而且有水印,对本人这种视力不好的人来说看起来是真的不方便。所以能不能制作属于自己的地铁线路图呢?好
- 内容摘要:当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页
- python3.7 打包成exe程序环境:pycharm2018.1+win7+python3.7工具:pyinstaller1、安装pyi
- 具体环境:Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx
- 前言python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield。有效利用生成器这个工具可以有效地节约系统资源,避免不必要的
- 在大多数语音识别任务中,我们都缺少文本和音频特征的alignment,Connectionist Temporal Classificati
- MNIST数据集比较小,一般入门机器学习都会采用这个数据集来训练下载地址:yann.lecun.com/exdb/mnist/有4个有用的文
- python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了。不过网上的基础教程只告诉你列表、字典是什么
- 源代码:# dict1 是 字典 , 用来对应相应元素的下标,我们将文件转成列表,对应的也就是文件的下标,通过下标来找文件元素dict1 =
- range()反向遍历的几种表达for i in range(10,0,-2):#有10 print(i)prin
- 本篇已得到原作者Steve Dennis的翻译准予,在此Jorux表示感谢!本教程主要参考Creating a CSS Layo
- 今天在百度知道看php相关资料时发现一个网友问一个wordpress安装提示错误的一个问题,说他在安装wordpress安装包时遇到这样一个
- 示例函数为了开发类型检查器,我们需要一个简单的函数对其进行实验。欧几里得算法就是一个完美的例子: def gcd(a, b):
- 本文实例讲述了JS 事件机制。分享给大家供大家参考,具体如下:<html> <head>
- 前言Python 的random模块包含许多随机数生成器。random是Python标准库之一,直接导入即可使用。本文介绍random中常用
- 1、截取GB2312字符用的函数 PHP代码 <?php //截取中文字符串 function mysubstr($str, $sta