Qt for Python—Qt Designer 概览
off999 2024-10-18 08:09 58 浏览 0 评论
前言
本系列第三篇文章(Qt for Python学习笔记—应用程序初探 )、第四篇文章(Qt for Python学习笔记—应用程序再探 )中均是使用纯代码方式来开发 PySide6 GUI 应用程序的。
本文是本系列第五篇文章,图文方式介绍可视化界面设计工具——Qt Designer。
1. 简介
Qt 提供了一款名叫 Qt Designer 的工具,该工具提供了 Qt 基本的可绘制窗口部件(如 QLabel 、 QPushButton 等)或布局(如:QVBoxLayout 、 QGridLayout 等),通过鼠标直接拖曳这些窗口部件,放置在窗体的相关位置,按所见即所得的方式,来进行窗体设计,并可以设计的窗体效果进行快速预览。
借助 Qt Designer 工具,能够高效、快速地以可视化方式完成窗体 UI 的设计,界面直观形象,所见所得。
文中会涉及到如下术语,简介如下:
- Widget:部件(也称组件、控件),用于 GUI 的图形界面元素,如按钮、标签等。
- Form:窗体,本文用于指 GUI 窗口的统称。
2 启动 Qt Designer
在本系列第二篇文章(Qt for Python学习笔记—搭建开发环境 )中有介绍到在安装完成 PySide6 模块后,会在安装路径(如: C:\Develop\Python\Lib\site-packages )下新增 PySide6 模块,其中就有一组可执行文件(如:designer.exe 、uic.exe 、 rcc.exe 等),其中 designer.exe 就是 Qt Designer 工具的可执行文件。通常为了便于后续启动 Qt Designer,我们会将 designer.exe 创建为桌面快捷方式(可通过鼠标右键,点【发送到】–>【桌面快捷方式】完成)。
单击桌面上的 Qt Designer 快捷方式,然后启动 Qt Designer。在 Qt Designer 窗口出现后,通常会自动弹出一个【新建窗体】的对话框窗口,在该窗口中选择一个窗体模板(如:Main Window),然后点击【创建】按钮,即可进入 Qt Designer 设计窗口。
3. Qt Designer 简介
3.0 窗口界面概览
下图为 Qt Designer 6.0.0 的一个典型设计窗口界面:
整个设计窗口除了窗体标题栏和边框外,可以划分为8个区域:
- 第1个区域:顶部的菜单栏
- 第2个区域:顶部菜单栏下方的工具栏(也称菜单快捷选项)
- 第3个区域:底部的状态栏
- 第4个区域:左侧的窗口部件盒
- 第5个区域:中间的窗体编辑器
- 第6个区域:右侧上方的对象检查器
- 第7个区域:右侧中部的属性编辑器
- 第8个区域:右侧下方的区域,该区域实际上包含3个Tab区域(信号/槽 编辑器、资源浏览器、动作编辑器)
3.1 菜单栏(Menu Bar)
菜单栏提供了 Qt Designer 设计窗口的大多数功能入口,共包括7组主菜单(如下图示)。
3.1.1【文件】主菜单项
该主菜单项下的子菜单项如下图示:
其中常用子菜单项介绍如下:
- 点击【新建…】子菜单项(或按快捷键 Ctrl + N)后,弹出【新建窗体】对话框。
- 点击【打开】子菜单项(或按快捷键 Ctrl + O)后,弹出【打开窗体】对话框,从相关路径中选择要打开的窗体文件(后缀名为 .ui)
- 点击【保存】子菜单项(或按快捷键 Ctrl + S)后,弹出【窗体另存为】对话框,选择保存路径,将当前窗体保存为指定文件名的窗体文件(后缀名为 .ui)
注1:通常情况,保存的窗体文件名与窗体的 objectName 保持一致(这样通过文件名就可以直接知道窗体的名称)。
注2:窗体文件(.ui)实际上一个 xml 文件,它记录了窗体上各部件的属性和位置分布。
扩展:【新建窗体】对话框中提供有三种类型(5种模板)的窗体供选择:
1) Main Window类型的窗体模板:该模板是一个基于 QMainWindow 类的窗体,具有主窗口的特性,顶部通常显示标题栏和边框,窗口上有主菜单栏、工具栏、状态栏等。
2) Widget 类型的窗体模板:该模板是一个基于 QWidget 类的窗体。QWidget 类是所有界面组件的基类,如 QLabel、QPushButton 等界面组件都是从 QWidget 类继承而来的。QWidget 类也是 QDialog 和 QMainWindow 的父类,基于 QWidget 类创建的窗体可以作为独立的窗口运行,也可以嵌入到其他界面组件内显示。
3) Dialog 类型的窗体模板:该模板是一个基于 QDialog 类的窗体,具有一般对话框的特性,如可以模态显示、具有返回值等。可以设置不同的标题栏外观,主要用于通知或收集输入窗口,如颜色对话框、字体对话框等,具体以下有3种:,
——(1) 底部带有对话框按钮的对话框
——(2) 右侧带有对话框按钮的对话框
——(3) 不带对话框按钮的对话框
3.1.2【编辑】主菜单项
该主菜单项下的子菜单项如下图示:
其中前9个子菜单项意思很容易理解,就不作介绍了。
最后4个子菜单项表示4种 GUI 窗口部件编辑模式:
- 【编辑窗口部件】子菜单项:对应部件编辑模式,此模式下可以在 Qt Designer 中添加 GUI 窗口部件,以及修改它们的属性和外观。
- 【编辑信号/槽】子菜单项:对应信号和槽编辑模式,此模式下可以在 Qt Designer 中的窗口部件上关联 Qt 已经定义好的信号和槽。
- 【编辑伙伴】子菜单项:对应伙伴编辑模式,此模式下可以在 Qt Designer 中的窗口部件上建立某个部件和其他窗口部件的伙伴关系。
- 【编辑 Tab 顺序】子菜单项:对应 Tab 编辑模式,此模式下可以在 Qt Designer 中的窗口部件上设置 Tab 键在窗口部件上的焦点顺序。
3.1.3【窗体】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 前9个子菜单项,均为布局相关的,会在后续文章中详细介绍。
- 点击【预览于】子菜单项,会显示3个下级子菜单项(【windowsvista 风格】、【Windows 风格】、【Fusion 风格】),在预览时分别对应三种风格的窗体。
- 点击【预览…】子菜单项(或按快捷键 Ctrl + R)后,可以对所创建的窗体进行预览。
- 点击【View C++ Code…】子菜单项后,可以查看该窗体对应的 C++ 代码。
- 点击【View Python Code…】子菜单项后,可以查看该窗体对应的 Python 代码。
- 点击【窗体设定…】子菜单项后,弹出【窗体设定】对话框窗口。
3.1.4【视图】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 勾选【窗口部件盒】子菜单项后,在主窗口的停靠区出现【窗口部件盒】
- 勾选【对象检查器】子菜单项后,在主窗口的停靠区出现【对象检查器】
- 勾选【属性编辑器】子菜单项后,在主窗口的停靠区出现【属性编辑器】
- 勾选【资源浏览器】子菜单项后,在主窗口的停靠区出现【资源浏览器】
- 勾选【动作编辑器】子菜单项后,在主窗口的停靠区出现【动作编辑器】
- 勾选【信号/槽 编辑器】子菜单项后,在主窗口的停靠区出现【信号/槽 编辑器】
- 【工具栏】子菜单项,可以对启用哪些快捷按钮进行设置。
3.1.5【设置】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 点击【首选项…】子菜单项后,出现【首选项】对话框(如下图示),可根据需要进行相关设置。
- 【其他字体】子菜单项
3.1.6【窗口】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 点击【最小化】子菜单项后,将当前窗体设置为最小化。
- 下面列示出 Qt Designer 中已经打开的窗体(当前正在编辑的窗体名前会有个圆点)
3.1.7【帮助】主菜单项
该主菜单项下的子菜单项如下图示:
各子菜单项功能一目了然,就不作进一步介绍了。
3.2 工具栏(Tool Bar)
在编辑窗体时经常会用到工具栏上的快捷按钮,实际上所有工具栏上的快捷按钮均可以通过菜单栏获得。
下图是缺省配置的工具栏:
共分为四组:
- 第一组(3个):依次对应主菜单项【文件】下的【新建】、【打开】、【保存】子菜单项。
- 第二组(2个):依次对应主菜单项【编辑】下的【放到后面】、【放到前面】子菜单项。
- 第三组(4个):依次对应主菜单项【编辑】下的【编辑窗口部件】、【编辑信号/槽】、【编辑伙伴】、【编辑 Tab 顺序】子菜单项。
- 第四组(8个):依次对应主菜单项【窗体】下的【水平布局】、【垂直布局】、【使用拆分器水平布局】、【使用拆分器垂直布局】、【网格布局】、【在窗体布局中布局】、【分拆布局】、【调整大小】子菜单项。
因工具栏上的按钮均对应菜单栏下的各子菜单项,其功能就请参见菜单栏部分了。
3.3 状态栏(Status Bar)
在状态栏中通常会显示一些跟当前操作相关的信息。
3.4 窗口部件盒(Widget Box)
窗口部件盒提供了用于设计窗体的一些标准的通用部件和布局。窗口部件盒中提供了8个分组类别,每个分组类别都包含具有相似用途或相关功能的部件。
通过单击窗口部件盒中的分组类别标签旁边的手柄,可以显示该分组类别中的所有可用对象(组件或布局)。当窗口处于【编辑部件模式】时,可以从窗口部件盒中选择适当的部件拖动到窗体编辑器中,然后将其拖放到所需的位置来将该组件添加设计到窗体。
3.4.1 布局分组类别(Layouts)
3.4.2 间隔分组类别(Spacers)
3.4.3 按钮分组类别(Buttons)
3.4.4 项目视图分组类别(Item Views)
Item Views 基于模型/视图(Model/View)结构,视图(View)与模型数据(Model Data)关联实现数据的显示和编辑。
3.4.5 项目部件分组类别(Item Widgets )
Item Widgets 直接将数据存储在每一个项里。一个项存储了文字、文字的格式、自定义数据等。
3.4.6 容器分组类别(Containers)
3.4.7 输入部件分组类别(Input Widgets)
3.4.8 显示部件分组类别(Display Widgets)
3.5 窗体编辑器
窗体编辑器中可以对窗体进行可视化设计,选择左侧窗口部件盒中的相应组件(或布局),通过鼠标拖曳至此区域,放置在相应位置。
上面示例图中分别从左侧窗口部件盒中的【Dispaly Widgets】分组类别中选择了2个 QLabel 部件,从【Input Widgets】分组类别中选择了2个 QLineEdit 部件,从【Buttons】分组类别中选择了2个 QPushButton 部件,通过鼠标拖曳至此区域(主窗体),并进行排列放置。
注1:顶部显示的“Main Window - untitled*” 表示该窗体尚未命名。
注2:此区域也可以通过快捷按钮(Ctrl + R)来对设计后的窗体的效果进行预览。
注3:更多信息会在后续文章中加以介绍。
3.6 对象检查器(Object Inspector)
对象检查器中用树形视图列示出了窗体上所有部件、以及各部件之间的布局和包含关系。
树形视图有两列,分别显示各部件的对象名称(objectName)和对应的类名称。
注:更多信息会在后续文章中加以介绍。
3.7 属性编辑器(Property Editor)
属性编辑器中列出了被选中的窗体或部件的各种属性和对应的值,可以在属性编辑器里修改这些属性的值。
属性编辑器的内容分为两列,其中左侧列是属性的名称,右侧列是该属性对应的值。
属性自上而下分为多个组,实际上代表了类的继承关系。
简单示例介绍:
——上部的 MainWindow : QMainWindow 表示这是一个 QMainWindow 窗体;
——objectName 属性:表示窗体/部件的对象名称,窗体中的每一个部件都需要一个唯一的对象名称,以便在代码中被引用。本例中 objectName 属性的值为“MainWindow”,表示窗体的对象名称为:MainWindow。该值可以进行修改。
——上图可以看出 QMainWindow 类的继承关系为: QObject 类 <– QWidget 类 <- QMainWindow 类。
——其他众多属性本文就不一一说明了,会在后续文章中陆续加以介绍。
注:更多信息会在后续文章中加以介绍。
3.8 信号与槽编辑器(Signal/Slot Editor)
信号与槽编辑器中列出了在 Qt Designer 中关联的信号和槽,通过双击列中的对象或信号/槽,可以进行对象和信号/槽的选择。
注:更多信息会在后续文章中加以介绍。
3.9 资源浏览器(Resource Browser)
资源浏览器中列出了程序使用的资源文件(*.qrc)以及相应的资源。
在该编辑器中可以创建或删除资源文件,也可以添加或取消资源。
注:更多信息会在后续文章中加以介绍。
3.10 动作编辑器(Action Eidtor)
动作编辑器中列出了为窗口部件设计的动作(QAction),并可以创建新动作和删除动作。
动作编辑器提供了一组快捷工具按钮:
- 【新建】按钮
点击该按钮,弹出一个【新建动作】对话框(如下图示),完成相关信息设置,点击【OK】按钮后即可完成创建一个新动作。
注:创建动作后,可以在任何适用的动作处使用它。
- 【删除】按钮
点击该按钮,即可删除被选中的动作。
- 【复制】、【粘贴】按钮
动作编辑器可以在菜单栏、工具栏和窗体之间复制和粘贴动作。
- 【配置动作编辑器】按钮
动作编辑器提供两种视图:图标视图 和 细节视图,点击该按钮,可进行这两种视图的切换。
要将动作添加到菜单栏或工具栏,只需在动作编辑器中在动作上按下鼠标左键,然后将其拖动到首选位置即可。
注:更多信息会在后续文章中加以介绍。
结束语
本系列介绍如何在 Python 中使用 Qt for Python 进行 GUI 应用程序开发。
本文是《Qt for Python 学习笔记》系列第五篇,对可视化设计工具 Qt Designer 进行了一个概览介绍,让读者对 Qt Designer 工具有个初步的认识。
接下来会介绍如何借助 Qt Designer 工具进行可视化界面设计并完成一个 PySide6 GUI 应用程序开发的过程,敬请期待!
希望本文能对您有所帮助!若文中存在疏忽不足或错误,还请不吝赐教!
相关推荐
- 推荐一款Python的GUI可视化工具(python 可视化工具)
-
在Python基础语法学习完成后,进一步开发应用界面时,就需要涉及到GUI了,GUI全称是图形用户界面(GraphicalUserInterface,又称图形用户接口),采用图形方式显示的计算机操...
- 教你用Python绘制谷歌浏览器的3种图标
-
前两天在浏览matplotlib官方网站时,笔者无意中看到一个挺有意思的图片,就是用matplotlib制作的火狐浏览器的logo,也就是下面这个东东(网页地址是https://matplotlib....
- 小白学Python笔记:第二章 Python安装
-
Windows操作系统的python安装:Python提供Windows、Linux/UNIX、macOS及其他操作系统的安装包版本,结合自己的使用情况,此处仅记录windows操作系统的python...
- Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字
-
Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字一、项目功能利用Tkinter组件中的Canvas绘制图形和文字。二、项目分析要在窗体中绘制图形和文字,需先导入Tkinter组...
- 一文吃透Python虚拟环境(python虚拟环境安装和配置)
-
摘要在Python开发中,虚拟环境是一种重要的工具,用于隔离不同项目的依赖关系和环境配置。本文将基于windows平台介绍四种常用的Python虚拟环境创建工具:venv、virtualenv、pip...
- 小白也可以玩的Python爬虫库,收藏一下
-
最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...
- python环境安装+配置教程(python安装后怎么配置环境变量)
-
安装python双击以下软件:弹出一下窗口需选择一些特定的选项默认选项不需要更改,点击next勾选以上选项,点击install进度条安装完毕即可。到以下界面,证明安装成功。接下来安装库文件返回电脑桌面...
- colorama,一个超好用的 Python 库!
-
大家好,今天为大家分享一个超好用的Python库-colorama。Github地址:https://github.com/tartley/coloramaPythoncolorama库是一...
- python制作仪表盘图(python绘制仪表盘)
-
今天教大家用pyecharts画仪表盘仪表盘(Gauge)是一种拟物化的图表,刻度表示度量,指针表示维度,指针角度表示数值。仪表盘图表就像汽车的速度表一样,有一个圆形的表盘及相应的刻度,有一个指针...
- 总结90条写Python程序的建议(python写作)
-
1.首先 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 (1)避免不规范代码,比如只用大小写区分变量、使用容易...
- [oeasy]python0137_相加运算_python之禅_import_this_显式转化
-
变量类型相加运算回忆上次内容上次讲了是从键盘输入变量input函数可以有提示字符串需要有具体的变量接收输入的字符串输入单个变量没有问题但是输入两个变量之后一相加就非常离谱添加图片注释,不超过1...
- Python入门学习记录之一:变量(python中变量的规则)
-
写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...
- 掌握Python的"魔法":特殊方法与属性完全指南
-
在Python的世界里,以双下划线开头和结尾的"魔法成员"(如__init__、__str__)是面向对象编程的核心。它们赋予开发者定制类行为的超能力,让自定义对象像内置类型一样优雅工...
- 11个Python技巧 不Pythonic 实用大于纯粹
-
虽然Python有一套强大的设计哲学(体现在“Python之禅”中),但总有一些情况需要我们“打破规则”来解决特定问题。这触及了Python哲学中一个非常核心的理念:“实用主义胜于纯粹主义”...
- Python 从入门到精通 第三课 诗意的Python之禅
-
导言:Python之禅,英文名是TheZenOfPython。最早由TimPeters在Python邮件列表中发表,它包含了影响Python编程语言设计的20条软件编写原则。它作为复活节彩蛋...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)