【PyQt5】(02)Qt Designer:快速设计GUI界面的利器

news2024/11/27 21:06:45

Qt for Python

系列文章目录

【PyQt5】(01)PyQt的详细介绍


文章目录

  • 系列文章目录
  • 前言
  • 一、安装Qt Designer
  • 二、Qt Designer的基本用法
    • 2.1 新建窗体
    • 2.2 添加部件
    • 2.3 编辑属性
    • 2.4 布局管理
    • 2.5 设置样式
    • 2.6 保存文件
  • 三、将UI文件转化为Python代码并显示
    • 3.1 使用uic将UI文件转换为Python代码
    • 3.2 创建对话框实例并显示UI
  • 总结


前言

  Python Qt Designer 是一个图形界面设计工具,用于创建Qt应用程序的用户界面。它支持创建典型的窗口和对话框,并允许使用各种小部件(widget)和布局管理器(layout manager)。
  Qt Designer是一个可视化编辑器,用户可以使用它在GUI界面中定义控件和布局,并将其保存为.ui文件。

本文将详细介绍 Python Qt Designer 的使用方法。

一、安装Qt Designer

  Python Qt Designer 可以通过 PyQt5 软件包进行安装。请运行以下命令:

pip install pyqt5-tools

  安装成功后,可以通过命令行启动 Python Qt Designer:

designer

Qt Designer

  如果你使用的Pycharm开发环境,可以在 Pycharm 中安装 PyQt5 工具箱(PyQt5 Tools)可以获得 Qt Designer、PyUIC 和 Pyrcc。

  在 PyCharm 中安装 Qt Designer、PyUIC 和 Pyrcc 可以通过以下步骤完成:

1. 安装 PyQt5 工具包

首先需要安装 PyQt5 工具包,可以通过以下命令行在 PyCharm 中安装:

pip install pyqt5

  如果已经安装了 PyQt5 但是没有安装 Qt Designer、PyUIC 或 Pyrcc,则需要使用以下命令行安装:

pip install pyqt5-tools

2. 将 Qt Designer 添加到 PyCharm

  打开 PyCharm,选择 “File->Settings”,在左侧面板中选择 “Tools->External Tools”,然后单击右侧面板中的 “+” 按钮。
Pycharm ExternalTools

  在弹出的对话框中,在"Name"字段中输入 “Qt Designer”,在 “Description” 字段中输入 “PyQt5 Qt Designer”,在 “Program” 字段中输入 Qt Designer 的安装路径,其他的如下图所示:
pycharm add PyQt5 Qt Designer
然后,单击 “OK” 按钮保存设置。

3. 添加 PyUIC 工具

  PyUIC是一种Python GUI应用程序的用户界面代码生成器,可以将Qt Designer UI文件生成Python源代码。PyUIC生成的Python代码是基于Qt的PyQt和PySide库。它可以方便地与其他Python库集成,如numpy、matplotlib等。PyUIC生成的代码易于阅读和修改,可以方便地定制应用程序的用户界面。
  与添加 Qt Designer 类似,可以将 PyUIC 工具添加到 PyCharm 中。在 “External Tools” 对话框中单击 “+” 按钮,然后输入以下信息:
pycharm add  PyUIC

实参输入以下内容:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
意思将选中的 xxx.ui 文件转换为同名的 xxx.py文件
需要特别注意的是,执行的时候需要右键选中对应的 xxx.ui 文件,不然会出错的。

3. 添加 Pyrcc 工具

  Pyrcc是一个命令行实用程序,用于将Qt Designer中创建的.qrc文件转换为.py文件。 Pyrcc是Qt开发者的常见工具,因为.qrc文件与Python程序捆绑在一起,例如Qt资源文件,通过PyQt5或PySide2模块在Python脚本中的访问方式。
  与添加 Qt Designer 类似,可以将Pyrcc 工具添加到 PyCharm 中。在 “External Tools” 对话框中单击 “+” 按钮,然后输入以下信息:

在这里插入图片描述)

保存设置后,可以在 PyCharm 中使用这些工具了。只需要右键单击任何 .ui、.qrc 或 .ui 文件,然后选择 “External Tools” 菜单,单击 “Qt Designer”、“PyUIC” 或 “Pyrcc” 即可。
在这里插入图片描述

二、Qt Designer的基本用法

2.1 新建窗体

  启动Qt Designer后,可以通过文件(File) -> 新建(New) 或使用快捷键Ctrl + N来创建新的UI文件。在弹出的对话框中选择需要使用的类别(如“Dialog”、“Main Window”等),并选择需要使用的模板(如“Empty”, “Grid”, “Dock Widget”等)。然后点击创建(R)按钮即可创建一个新的UI文件。

New forms dialog of Qt Designer

在新建窗体对话框中,你可以选择创建的窗口类型,主要介绍如下几种:

  • Dialog:创建一个对话框窗口,此窗口通常用于显示相对较少的信息或与用户交互。 Main
  • Window:创建一个主窗口窗口,此窗口通常用于显示大量信息和多种不同的功能。
  • Widget:创建一个普通的窗口控件,此窗口通常只是用来显示信息或数据。
  • DockWidget:创建一个浮动窗口控件,此窗口通常用于显示常用的工具或者选项,并且可以随时移动或关闭。
  • ToolBar:创建一个工具栏窗口控件,此窗口可以包含多个工具按钮,以方便用户进行操作和导航。

2.2 添加部件

在左侧的“Widget Box”中,可以找到各种类型的控件,比如按钮、文本框、标签、下拉菜单、复选框、单选按钮和进度条等。可以通过拖动控件到窗口中添加。

2.3 编辑属性

在窗口中添加控件后,可以通过“Property Editor”编辑控件的属性。例如,可以更改控件的大小、位置、文本内容、颜色、字体等。

2.4 布局管理

在添加控件时,需要考虑控件的位置和大小。布局管理器可以帮助我们在窗口内按照一定的方式排列控件,使窗口更加美观。Qt Designer提供了以下几种类型的布局管理器:

QVBoxLayout:垂直布局。

QHBoxLayout:水平布局。

QGridLayout:网格布局。

QFormLayout:表单布局。

QStackedLayout:层叠布局。

2.5 设置样式

可以通过“Style Sheet Editor”设置窗口和控件的样式。例如,可以设置控件的背景色、前景色、边框样式等。

2.6 保存文件

最后将窗口保存为.ui文件,可以在“File”菜单中选择“Save”或使用快捷键Ctrl+S。.ui文件是一个XML文件,包含了窗口和控件的布局、属性、事件以及信号槽等信息。

三、将UI文件转化为Python代码并显示

Qt Designer设计好的UI文件可以通过PyQt或PySide中的uic模块将其转换为Python代码,从而使其可以在Python程序中使用。下面介绍一下具体的步骤。
在这里插入图片描述

3.1 使用uic将UI文件转换为Python代码

在 PyCharm 中只需要右键单击.ui文件(test_dialig .ui),然后选择 “External Tools” 菜单,单击PyUIC即可。

使用uic将UI文件转换为Python代码

在Python程序中使用如下代码可以将UI文件转换为Python代码:

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 100, 291, 31))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setObjectName("label")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "test_dialog"))
        self.label.setText(_translate("Dialog", "这是一个测试对话框"))

3.2 创建对话框实例并显示UI

运行Python程序后,UI界面就会显示出来,用户即可使用UI界面中的各种控件。

import sys
from PyQt5.QtWidgets import QApplication, QDialog
from test_dialog import Ui_Dialog  # 导入对话框类


class MyDialog(QDialog):
    def __init__(self):
        super().__init__()

        # 实例化对话框类
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    dialog = MyDialog()
    dialog.show()
    sys.exit(app.exec_())

在上面的代码中,我们导入了PyQt5中的QApplication和QDialog类,并从我们生成的Python代码文件中导入了对话框类。

然后,我们创建一个MyDialog类,继承自QDialog,并在构造函数中实例化对话框类。最后,我们创建一个应用程序(QApplication),实例化MyDialog类,调用show()方法来显示对话框,并启动应用程序的事件循环。

运行上面的代码,就可以显示由Qt Designer生成的对话框了。

test dialog

总结

Python Qt Designer 是一个强大的图形界面设计工具。它提供了用户友好的界面来创建和编辑窗口和小部件,并帮助用户使用布局管理器自动排列它们。使用 PyQt5,可以将 .ui 文件加载为 Python 应用程序的主窗口,并通过各种控件来交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

请问一下java在线编程的网站有哪一些?

前言 下面为大家整合了一些Java在线编程的的网站,个人认为都是挺好用的,整合不易,希望大家能顺手留下点赞和收藏! 废话少说,我们直接进入正题: 1、菜鸟工具 菜鸟工具的这个在线编程工具页面很为简洁&…

linux查看/修改某个进程运行的CPU核

1.ps -eF #查看fwd进程运行在哪个cpu核上 [rootCENTOS57 rpm]# ps -eF | grep fwd 2.top命令 (1)top (2)按f键可以选择下面配置选项 P Last Used Cpu (SMP) (3)Esc 退回到top界面可以看到多了一列进程所在cpu信息 3.pidstat命令 查看进程使用cpu情况,如果绑定了多…

CH32V3xx RT-Thread下的ethernet调试及问题记录

目录 1、CH32V3xx 以太网模块简介2、TCP Client 程序2.1 WCHNET库2.1.1 添加WCHNET2.1.2 以太网配置2.2 TCP Client代码2.3 测试结果3、调试过程中的一些问题1、CH32V3xx 以太网模块简介 CH32V3xx MCU的以太网收发器是微控制器的一个重要高速高速通讯外设,集成了千兆的MAC(媒体…

堆积如山:探索数据结构中的堆

前言 欢迎来到小K的数据结构专栏的第十一小节,本节将为大家带来堆的详解并带来堆题目的讲解(✨当然也为大家准备了完整的源码 )~希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🐾 目录…

排查一次nacos动态配置不生效

一、问题描述 新需求需要使用到nacos动态配置,但是开发完成之后联调过程中发现动态配置没有生效。 二、问题排查 首先在本地测试,发现启动服务后修改nacos配置确实不生效,在查看启动日志时发现服务启动时打印了下面这样的日志。这里是在配…

Blender3.2使用python脚本命令的三种方式, 以及源码示例

本文环境系统OS(Win10) 方式一,在Script(脚本)功能里面的Console(控制台输入python代码)。 如下图: 对应的三句代码是: print("Hi, blender.")import bpybpy.ops.mesh.primitive_cube_add(enter_editmodeFalse, alignWORLD, location(0,0, …

ModBus通信详解

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的…

python通过远程连接mysql数据库进行操作

文章目录 前言一、开启远程访问权限1、开启远程访问端口2、命令行登录mysql 二、Navicat 建库1、新建连接2、建库建表 三、python对数据库进行远程操作三、总结四、参考资料 前言 环境: 1、mysql 5.7 2、pycharm 22.3.1 Professional 3、navicat 一、开启远程访问权…

数字孪生与物流园区:优化布局规划的关键

随着全球贸易的增长和物流行业的发展,物流园区作为重要的物流枢纽和供应链管理中心,扮演着至关重要的角色。而数字孪生技术的出现为物流园区的运营和管理带来了革命性的变化。数字孪生技术是一种将实体物体与其数字化模型相结合的创新技术,通…

微信小程序| 基于ChatGPT+明基屏幕挂灯实现超智能家居物联网小程序

一、需求背景 在尝试了这么多次的ChatGPT在纯软方向的应用开发后,深感LLM(大语言模型)的能力之强大。俗话说得好:心有多大舞台就有多大!基于AI大模型,可以尝试的方面实在是数不胜数!轻轻松松就可以突破在移动互联网时…

1. Qt小游戏 --- 推箱子

1. 说明 这个小游戏主要使用Qt中的绘制事件函数**paintEvent()**在画布上面不停的绘制图形,并使用定时器做时间上的触发处理,这个小游戏只是做了简单的逻辑处理,具体复杂的功能读者可自行发挥,效果展示如下: Qt制作推箱子小游戏 2. 相关代码 《推箱子》小游戏项目文件中…

最新(photoshop AI)photoshop beta 安装成功过程

目录 安装过程说明如图 效果如图 第一步:手机浏览器 创建 微软邮箱 打开浏览器 注册时候,选择 MG,其他正常填写即可。 第二步:打开 官网,(创建账号)或者直接输入注册的账号直接登录 第三…

ArgoCD(四)--Application管理

1.3 Application管理 先导入一个测试的repo在本地gitlab(gitlab.icloud2native.com),方便测试。 1.3.1 创建application 通过argocd cli创建application 通过argocd 的命令行可以创建application argocd app create guestbook --repo http…

Spark大数据处理学习笔记1.2 Scala变量与数据类型

文章目录 一、变量声明(一)简单说明(二)利用val声明变量1、声明方式2、案例演示 (三)利用var声明变量1、声明方式2、案例演示 (四)同时声明多个变量 二、数据类型(一&…

企业课(理论)

数据链路层 IP地址:32bit 十进制、二进制表示 Mac地址:48bit 十六进制 (0-9,a-f) Mac地址: 单播Mac地址:一对一 48bit第八bit为0 组播Mac地址:一对多 48bit第八b…

iOS app上架截屏尺寸 5.5英寸:1242x2208 6.5英寸:1242x2688

5.5英寸和6.5英寸的iphone的截屏必须上传 5.5英寸:1242x2208 6.5英寸:1242x2688

张量分析入门笔记 (Tensor For Beginner)

前言 学习的时候感觉要学一下张量,在B站看了一个视频,记录一下,参考的是B站视频【机翻】张量分析入门 (Tensor For Beginner) 前言1. 张量的定义 Tenson Definition2. 张量的前向和后向的转换 Forward and Backward Transformation3. 向量 Ve…

Java网络开发(servlet思考)——什么时候用转发,什么时候用重定向 请求request,响应response

目录 引出转发和重定向1.请求转发---request2.响应重定向----response 转发?重定向?1.登陆后重定向2.登陆后转发3.总结 案例:图书信息管理系统1.用户相关操作---注册,登陆,修改密码 / 昵称,退出登陆2.图书相…

努力有没有用?

努力有没有用? 都说站在风口浪尖,猪都能飞起来。 但时代的红利也是给有准备的人才能抓住。凭什么人家努力了那么久,做了那么多准备,在无人问津的小黑屋熬那么久,终于出人头地后被说成是吃了时代的红利。 努力&#xf…

vue封装组件发布到npm,支持unplugin-vue-components按需引入

目的:vue封装组件发布到npm,支持unplugin-vue-components按需引入 vue组件 https://gitee.com/jiangzhuqingfeng/plugin-vue-componets.git工具类 https://gitee.com/jiangzhuqingfeng/plugin-validate.gittaro组件 https://gitee.com/jiangzhuqingfeng/plugin-tar…