Python PyQt5 Qt Designer (Qt设计师)

article/2025/10/21 17:41:30

PyQt5 Qt Designer (Qt设计师)


本文由 Luzhuo 编写,转发请保留该信息.
原文: https://blog.csdn.net/Rozol/article/details/87705426


PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发.
Qt是强大的GUI库之一, 用C++开发, 并且跨平台.
PyQt双许可证, 要么选择GPL(自由软件协议)将代码开源, 要么选择商业许可交商业许可费.
PySide拥有LGPL 2.1授权许可, 可开发 免费开源软件 和 私有商业软件. 把PyQt5代码切换到PySide2代码是相当容易的, 这也是为什么选择学习PyQt5的原因
个人推荐学习PyQt5可以先通过 zetcode (翻译版) 快速入门, 然后再通过查阅 Qt官方文档 进行详细的学习.

准备工作

  • 安装PyQt5: pip install pyqt5
  • 安装Qt工具: pip install pyqt5-tools
  • 配置Qt工具系统环境变量: Path=C:\Code\Python_Vir\python1\Lib\site-packages\pyqt5_tools

Qt Designer (Qt设计师)

强大的可视化GUI设计工具, 帮助我们快速开发PyQt.
它生成UI界面为.ui文件, 通过命令将.ui转为.py文件.

1.启动Qt Designer

命令执行designer, 便会弹出以下界面
在这里插入图片描述

最常用的就是创建 Widget(通用窗口) 和 MainWindow(主窗口), 这里我们创建一个 MainWindow.

下面简单介绍下主要功能:
在这里插入图片描述

文件保存为xxx.ui文件, 可以用文本及编辑打开编辑, 其数据是XML格式的.

2.将xxx.ui文件转为xxx.py文件

通过以下命令行执行, 即可生成 designer_demo.py 文件

pyuic5 -o designer_demo.py designer_demo.ui

3.运行布局文件

导入并继承它

from designer_demo import Ui_MainWindow
class MyDesiger(QMainWindow, Ui_MainWindow):

编写以下代码, 放在designer_demo.py同文件夹下, 运行即可

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from designer_demo import Ui_MainWindowclass MyDesiger(QMainWindow, Ui_MainWindow):def __init__(self, parent=None):super(MyDesiger, self).__init__(parent)self.setupUi(self)if __name__ == "__main__":app = QApplication(sys.argv)ui = MyDesiger()ui.show()sys.exit(app.exec_())

控件箱简介

  • Layouts 布局 (选中控件 -> Lay out(右键) -> 选择布局)
    • Vertical Layout: 垂直布局
    • Horizontal Layout: 水平布局
    • Grid Layout: 网格布局 (划分为 行 和 列)
    • Form Layout: 表单布局 (左列标签, 右列控件)
  • Containers 容器
    • Group Box
    • Scroll Area
    • Tool Box
    • Tab Widge
    • Stacked Widget
    • Frame: 帧容器, 可放入布局 / 控件等
    • Widget: 窗口容器
    • MDI Area
    • Dock Widget
  • Item Widgets 条目控件
    • List Widget: 列表条目
    • Tree Widget: 树形条目
    • Table Widget: 标签页条目
  • Spacers 间隔(透明)
    • Horizontal Spacer: 水平间隔
    • Vertical Spacer: 垂直间隔
  • Buttons 按钮
    • Push Button: 按钮
    • Tool Button: 工具箱按钮 (…)
    • Radio Button: 单选框
    • Check Box: 多选框
    • Command Link Button:
    • Dialog Button Box: Dialog 按钮 (ok | cancel)
  • Input Widgets 输入控件
    • Combo Box: 下拉框
    • Font Combo Box: 字体下拉框
    • Line Edit: 行文本编辑框
    • Text Edit: 文本编辑框
    • Plain Text Edit: 文本编辑框
    • Spin Box: 选择整数值
    • Double Spin Box: 选择浮点数值
    • Time Edit: 时间选择框
    • Data Edit: 日期选择框
    • Data/Time Edit: 日期 时间 选择框
    • Dial: 圆形滚动表盘
    • Horizontal Scroll Bar: 水平滚动条
    • Vertical Scroll Bar: 垂直滚动条
    • Horizontal Slider: 水平拖动条
    • Vertical Slider: 垂直拖动条
    • Key Sequence Edit: 按键编辑框
  • Display Widgets 显示控件
    • Label: 标签 (显示文字 / 图片等)
    • Text Browser: 文本浏览(不可编辑)
    • Graphics View: 绘画
    • Calendar Widget: 日历
    • LCD Number: LCD数字显示屏
    • Progress Bar: 进度条
    • Horizontal Line: 水平线
    • Vertical Line: 垂直线
    • OpenGL Widget: OpenGl

控件属性简介

  • objectName: 控件对象名
  • geometry: 相对坐标(px) x,y,width,height
  • sizePolicy: 控件大小策略
    • Fixed: 控件有 sizeHint 尺寸且尺寸不变
    • Minimum: 控件有 sizeHint 最小尺寸, 尺寸可变大
    • Maximum: 控件有 sizeHint 最大尺寸, 尺寸可变小
    • Preferred: 控件有 sizeHint 期望尺寸, 有minisizeHint最小尺寸, 尺寸可变大
    • Expanding: 控件有 minisizeHint 最小尺寸, 希望更大尺寸
    • MinimumExpanding: 控件有 sizeHint 最小尺寸, 希望更大磁村
    • Ignored: 无视 sizeHint 和 minisizeHint, 按默认设置
  • minimumSize: 最小尺寸
  • maximumSize: 最大尺寸 (固定尺寸: minimumSize=maximumSize)
  • font: 字体
  • cursor: 光标
  • windowTitle: 窗口标题
  • WindowsIcon: 窗口图标
  • iconSize: 图标大小
  • toolTip: 提示泡提示信息
  • statusTip: 状态栏提示信息
  • text: 控件文本
  • shortcut: 快捷键
  • horizontalSpacer: 水平间距

信号(signal)和槽(slot)

PyQt5处理事件有个signal and slot机制, 事件触发产生信号(signal), 当信号发送(emit())时, 连接的槽(slot)便会执行.

信号与槽的连接

sender.signal.connect(receiver.slot)# 例子
btn.clicked.connect(self.buttonClicked)

快速连接伙伴 (信号槽)

按F4选择 Edit Signal/Slot 模式 -> 鼠标按住控件1拖拽到控件2上松开 -> 弹出对话框, 选择两边连接事件 -> ok -> 按F3切换回 Edit Widgets 模式

演示:
在这里插入图片描述

菜单栏

菜单栏通过双击 Type Here 添加一级菜单(File), 点开一级菜单双击 Type Here 添加动作(New File), 若点了后面的+, 并添加动作(Text File), 则动作(New File)将变成子菜单.

在这里插入图片描述

并且我们可以在 动作编辑器 里修改 菜单里的动作

在这里插入图片描述

加载资源文件

1.加载资源

直接上动态图吧
在这里插入图片描述

2.使用资源

Label控件拖到窗口上 -> 属性设置pixmap

3.编译成可执行代码

除了需要把.ui文件转成.py文件外, 还需要把.qrc文件转成.py文件

pyrcc5 app.qrc -o app.py

代码处理

import app
self.label.setPixmap(QtGui.QPixmap(":/pic/designer1.png"))

http://chatgpt.dhexx.cn/article/NITZvP6Y.shtml

相关文章

Qt Designer简介

来源 http://www.python3.vip/tut/py/gui/qt_03/ 回顾 在前面的程序中,我们学习了怎么样用程序来把QT程序界面的 一个个窗口、控件创建出来 问题分析 QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你…

Unity资源打包(AssetBundle)

一、AssetBundle的定义和作用 定义: - 它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件&a…

游戏开发unity资源管理系列:unity不支持长路径;DirectoryNotFoundException: Could not find a part of the path ““

说明: 使用Addressables打包出现如下报错 DirectoryNotFoundException: Could not find a part of the path "" 打断点发现资源路径与目标路径字符串非空,但是仍然提示报错。Library\com.unity.addressables下ab资源打出,但是仍然报…

Unity资源包共享

unity最全材质球的资源包 unity家具包装设计资源包 unity游戏模型资源包 unity人物模型资源包 unity枪模型资源包 … … … 其中一部分 有需要的朋友下方评论留下邮箱号,我发给你们,文件太大无法上传

Unity资源替换工具,旧模型替换新模型,替换GUID,替换meta文件,文件丢失等问题

Unity资源替换工具,旧模型替换新模型,替换GUID,替换meta文件,文件丢失等问题 使用说明如何使用 使用说明 第一次写,不是很规范,好东西分享给大家,学点编辑器扩展好处多啊! 如何使用 这个小工具确实帮到我了,替我省了不少时间 直接上代码: using UnityEngine; using System.…

unity网络资源导入

1、找到需要导入的文件,这里导入fbx格式 2、打开unity界面,在Asset目录下创建文件夹FBX,将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3、选中需要的fbx预制体并拖至场景中 4、双击定位到当前物体 5、找到需要导入的贴图文件text…

Unity 查找资源引用

当我们想要查找某个资源的引用情况时,可以使用文末的工具类 使用方法 先将我们的工具类放到项目中,放在哪里都可以。选中要查找的资源,右键选中的资源(资源类型没有限制),在弹出的选项中选择查找资源引用,如图一所示…

Unity资源管理——AssetBundle构建/打包

1、为资源设置 assetBundleName 和 assetBundleVariant。 可以在资源的 Inspector 上手动设置,也可以通过 AssetImporter 进行设置。 AssetImporter importer AssetImporter.GetAtPath(assetPath); importer.assetBundleName abName; importer.assetBundleVarian…

unity资源优化插件

转载 来自:http://blog.uwa4d.com/archives/Resource_Plugin.html 工欲善其事必先利其器。在Unity官网的Asset Store上有不少给力的资源插件,能帮助我们减少人力资源消耗的同时,更快更好地驾驭引擎。今天我们就从善用资源的角度,推…

Unity常见资源类型

资源工作流程 在Unity项目中有一个固定的文件夹—Assets文件夹。 Assets是放项目需要到的文件资源的,比如:图片文件、3D模型文件(*.FBX格式)、音频等。 资源文件是可能来自 Unity 外部创建的文件,例如 3D 模型、音频…

反编译apk获取unity资源流程分享

什么时候需要这样做? 遇到真机问题,如资源丢失检查,可能需要直接拆开对应的包来确认资源是否存在,打包是否没打进去。例如检查某个tdr表格是否没有打进包里面,或者检查包里某个资源版本是不是不对 看到其他做的很好的游戏&…

【Unity 资源分享】☀️ | Unity 华丽炫酷特效资源分享!万年魂环拿到手软,让你直达封号斗罗~

📢博客主页:https://blog.csdn.net/zhangay1998📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉📢未来很长&a…

unity资源释放(AssetBundle和Asset)

本节主要叙述下,资源的释放问题。 1、我们准备了下两个资源,并且要做打包处理。 代码的代码,很简陋,只是为了说明问题。代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine…

【Unity 资源分享】 | Unity 精品写实动物模型+全套动画 资源分享

📢前言 💦好久没有写分享Unity资源的文章了,最近也是收藏了挺多Unity相关的资源💦所以就来写一篇文章分享几个资源包您喜欢💦所以呢,这次小Y又从自己的乾坤袋里掏出了一个精品动物模型全套动画分享给大家使…

Unity资源热更-Addressables总结(一)

Addressables是Unity官方推出的用于资源热更的系统,可在Package Manager里面下载,我这里分两部分讲解,第一部分是操作入门,第二部分是代码编程以及注意事项 一、入门 选择合适的Addressables版本下载安装完成后,选择Gr…

Unity 资源商店无法登陆,提示链接失效 的解决办法

出现资源商店无法登陆问题,网络换一下,用自己的手机热点连网,就可以了。

Unity 加载资源

直接把资源放在unity的目录里是不行的 打包的时候 不会打进去 要想打包到apk里 只有两种选择 1 放到 StreamingAssets 里 – Application.streamingAssetsPath 2 场景里有引用 他会自动打包进apk里 资源放到预制体里 并且预制体没在场景里 也不打包 先安装 https://github.co…

Unity 资源加载卸载过程

什么时候才是UnusedAssets? 看一个例子: Object obj Resources.Load("MyPrefab"); GameObject instance Instantiate(obj) as GameObject; ......... Destroy(instance); 创建随后销毁了一个Prefab实例,这时候 MyPrefab已经没有被实际的物体…

Unity资源分享网站——记录

UWA开源库 UWA问答 | 开源库 | 帮助开发者发现更好的解决方案| 侑虎科技 FREEDOMCLUB Get Unity Assets For Free | Welcome To Unity Assets FREEDOM CLUB Itch.io Top game assets - itch.io reddit https://www.reddit.com/r/Unity3D/ NOTE 「unity」の人気の記事一覧&a…