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

作者:Mengwei_Ren 时间:2022-04-22 01:39:50 

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开发请查看下面的相关链接

来源:https://blog.csdn.net/Mengwei_Ren/article/details/71305885

标签:python,PyQt5
0
投稿

猜你喜欢

  • Dreamweaver量身打造Wordpress留言板(三)

    2009-12-13 18:45:00
  • Qzoneing主题视觉设计分享

    2009-07-21 18:12:00
  • js添加千分位的实现代码(超简单)

    2023-08-25 07:43:29
  • 数据库安全应用 使用MySQL的23个注意事项

    2009-05-13 10:27:00
  • php中数字、字符与对象判断函数用法实例

    2023-07-24 03:27:08
  • SQL Server日志清除的两种方法教程简介

    2008-05-04 20:59:00
  • Python之日期与时间处理模块(date和datetime)

    2023-09-29 12:53:06
  • Python多线程同步Lock、RLock、Semaphore、Event实例

    2023-08-03 20:47:15
  • 有关asp的系统变量ServerVariables (“HTTP_USER_AGENT“)?

    2009-10-29 12:12:00
  • oracle命令行删除与创建用户的代码

    2009-03-02 10:54:00
  • Python读取word文本操作详解

    2023-08-23 15:32:50
  • HTML5本地存储初探(二)

    2010-03-07 15:47:00
  • nginx搭建基于python的web环境的实现步骤

    2023-07-27 07:06:49
  • php递归删除目录与文件的方法

    2023-09-12 02:02:02
  • 关注oblog 关注xml-rpc 自己开发客户端小记

    2009-10-04 20:27:00
  • 对acronym、abbr标签的理解

    2008-05-29 13:03:00
  • asp 网站静态化函数代码html

    2011-03-16 11:21:00
  • 使用tensorflow实现AlexNet

    2023-08-10 08:29:30
  • 用ASP读取/写入UTF-8编码格式的文件

    2007-08-20 09:29:00
  • PL/SQL number型数据

    2009-02-26 10:59:00
  • asp之家 网络编程 m.aspxhome.com