- 博客(340)
- 资源 (4)
- 收藏
- 关注
原创 Qt Designer的父子部件样式表设置学习
在Qt Designer中新建图像界面,放置两个QWidget,命名为widget_1和widget_2;单独改变了widget_2,但是隶属于widget_2的pushButton_1和pushButton_2并没有改变。需要注意的是,采用这种办法,如果被改变的小部件还有它的子部件,子部件并不跟随被改变的小部件的改变而改变。这里,将隶属于widget_1的类型为QPushButton的所有部件全部定义了新的显示特性。这个样式表的含义为:widget_1中,所有的QWidget都按照指定的样式表显示。
2024-07-27 00:13:29
1422
原创 PySide6从0开始学习的笔记(二十) qdarkstyle的深入应用
所有的操作均在下载到本地的QDarkStyleSheet-master项目下进行:项目地址:https://github.com/ColinDuquesnoy/QDarkStyleSheet/tree/master我放在了网盘:https://pan.baidu.com/share/init?surl=OP5e_ejyB5Brbao3VNSx7Q 提取码: 2jxrqdarkstyle的colorsystem.py中的所有颜色: qdarkstyle的配色系统只有灰色和蓝色两种色系共32
2025-12-30 21:55:42
551
原创 PySide6从0开始学习的笔记(十九) 界面显示主题的学习
模板库核心思路:不依赖封装库,直接使用现成的 QSS 模板(而非写代码的库),手动加载实现主题切换。官方模板资源和使用范例(Qt 官方示例)适用场景:需要完全定制界面风格(比如仿 Windows 11、macOS 风格),不想被库的样式限制。app.setStyleSheet(load_qss("dark.qss")) # 加载本地 QSS 文件核心特点:Linux 下的 Qt 样式引擎,支持海量自定义主题(可从下载),支持动态切换、透明度调节。适用场景。
2025-12-28 12:22:12
958
原创 PySide6从0开始学习的笔记(十八) MVC(Model-View-Controller)模式的图形渲染体系
MVC 的核心是数据(Model)- 视图(View)- 控制器(Controller)QGraphicsItem(图元)= Model(模型):图元是显示的基本单元,它可以是一个圆、一个多边形、一条直线,或者是一个图片,它承载着图形的核心数据与状态(比如坐标、形状、颜色、是否可交互、像素数据等),是 “要渲染的内容本身”,不关心自己如何被显示、在哪显示。QGraphicsView(视图)= View(视图)
2025-12-26 09:38:12
907
原创 PySide6从0开始学习的笔记(十七) 应用程序:QApplication
是 PySide6 应用的核心枢纽,负责事件循环、全局配置、资源管理等关键功能。掌握其常用方法(如exec()instance()setStyle())是开发 Qt 界面程序的基础,合理使用可保证应用的稳定性和跨平台兼容性。
2025-12-25 12:47:00
746
原创 PySide6从0开始学习的笔记(十六) 定时器QTimer
QTimer是 Qt 事件循环驱动的定时器,核心是timeout信号,支持单次 / 重复触发;主线程使用时可直接绑定 UI 操作,子线程使用需配合事件循环和信号槽;优先使用或静态方法singleShot实现延时任务;注意线程安全,UI 操作必须在主线程执行,高精度场景需选择合适的定时器类型。
2025-12-24 23:20:43
950
原创 PySide6从0开始学习的笔记(十五) 线程管理
方式适用场景优点缺点继承 QThread简单、单一的耗时任务代码直观,易理解线程复用性差复杂、可复用的任务灵活,解耦,易管理代码稍多大量短期小任务高效,低资源开销不适合长期运行的任务主线程只处理 UI,子线程处理耗时操作;线程间通信仅通过信号与槽;安全停止线程,避免强制终止;共享数据加锁,防止数据竞争。
2025-12-24 21:33:21
956
原创 PySide6从0开始学习的笔记(十四)创建一个简单的实用UI项目
<x>0</x><y>0</y></rect><size></size><size></size><string/></widget></item><size></size><size></size></widget></item></layout></widget><rect><x>0</x><y>0</y>
2025-12-22 21:59:26
1282
原创 PySide6从0开始学习的笔记(十二) QProgressBar(进度条)
支持确定 / 不确定进度模式自定义文本格式和样式结合多线程实现无阻塞进度更新可通过自定义绘制实现复杂分段效果实际开发中,需根据场景选择合适的进度更新方式(定时器 / 多线程),并通过 QSS 适配界面风格。
2025-12-20 07:00:00
409
原创 PySide6从0开始学习的笔记(十一) QSS 属性选择器
如果内置属性无法满足筛选需求,可通过给控件设置自定义属性btn = QPushButton("危险按钮")# 设置自定义属性:type=danger# 如果是动态修改属性,需刷新样式才能生效import sysbtn = QPushButton("危险按钮")# 设置自定义属性:type=danger、size=largebtn2 = QPushButton("启动按钮")""")enabledfocusobjectName等;控件专属属性(如 QPushButton 的default。
2025-12-19 18:20:44
1083
原创 PySide6从0开始学习的笔记(十) 样式表(QSS)
对于自定义控件(继承 QWidget),默认无法直接应用 QSS 背景等样式,需重写paintEvent或设置。示例:支持 QSS 的自定义控件import sys# 启用样式背景(关键)self.setAttribute(Qt.WA_StyledBackground, True) # 启用样式背景,必需的""")基础样式控制(颜色、字体、边框)状态与子控件的精细化样式运行时动态切换样式自定义控件的样式适配高级用法的关键在于掌握选择器优先级子控件定位状态伪选择器。
2025-12-19 07:00:00
1157
原创 PySide6从0开始学习的笔记(八) 控件(Widget)之QSlider(滑动条)
QSlider 是 PySide6 中灵活的数值调节控件,核心在于掌握数值范围 / 步长设置、信号绑定和样式定制。根据场景选择合适的信号(如实时响应选 sliderMoved,确认值选 sliderReleased),结合 QSS 可实现与界面风格统一的滑动条。
2025-12-18 13:34:16
615
原创 PySide6从0开始学习的笔记(九) 控件(Widget)之QComboBox(下拉选择框)
设置下拉框最多显示 3 个条目(超出显示滚动条)# 设置下拉框最小宽度。
2025-12-18 07:00:00
1012
原创 PySide6从0开始学习的笔记(七) 控件(Widget)之文字输入类控件
QPlainTextEdit 是 PySide6 中处理纯文本的核心控件,通过基础文本操作、光标控制、信号响应可满足大部分纯文本编辑需求,结合语法高亮、行号控件等扩展可实现代码编辑器、日志查看器等复杂功能。重点掌握其轻量级特性、行级操作和信号槽机制,即可灵活应用于各类文本处理场景。
2025-12-17 22:00:40
852
原创 PySide6从0开始学习的笔记(六) 控件(Widget)之按钮类
原生的单选按钮,选中标志图片和文字都很小,如果有需求,可以使用设置样式表,也就是setStyleSheet()的方法将其设置为自己的图片,同样的,它的字体也可以更改。PySide6 中的交互类控件是用户与应用程序进行双向沟通的核心组件,涵盖按钮、输入框、选择器、滑块等,这类控件支持用户操作(点击、输入、选择等)并能触发响应逻辑。:stateChanged(int)(状态变化时触发,0 = 未选,1 = 半选,2 = 选中)。:多选项选择(可多选),支持三态(选中 / 未选中 / 半选中,如子项部分选中)。
2025-12-17 18:14:25
406
原创 pyside6.QtCore.Slot 的简单研究
槽函数可以是 def(实例方法)、@staticmethod(静态方法),但不能是 @classmethod(类方法),且通常用 def 实例方法(可访问组件实例属性)。简单说,PySide6 的 @slot() 就是给方法 “打标签”,告诉 PySide6:“这个方法是用来响应信号的,请允许信号触发它”,是信号槽机制的核心语法。信号传递的参数类型、数量,必须和 @Slot() 声明的类型、数量完全一致,否则连接失败或运行时报错(推荐显式指定类型,而非省略)。中,@Slot() 是。
2025-12-16 21:30:28
901
原创 PySide6从0开始学习的笔记(五) 信号与槽
import sys# 自定义信号:必须定义为类属性,可以指定参数类型(str, int 等)custom_signal = Signal() # 定义一个不带类型参数的信号self.btn = QPushButton("发送自定义信号")self.label = QLabel("等待信号...")# 1. 连接按钮点击信号到发送自定义信号的发射函数# 2. 连接自定义信号到槽函数。
2025-12-16 15:28:36
968
原创 PySide6 的 QSettings简单应用学习笔记
的类,会自动将应用的配置数据保存到系统对应位置(Windows 注册表、macOS/iOS 的 plist 文件、Linux 的配置文件),无需手动管理文件路径。QSettings 的核心价值是。如果后续修改了窗口布局(如新增 / 删除停靠窗口、工具栏),restoreState 可能会失败。(工具栏位置、停靠窗口位置 / 状态、菜单栏可见性等),返回 QByteArray 类型。(位置、大小、是否最大化 / 最小化),返回 QByteArray 类型。QSettings 是 PySide6 中用于。
2025-12-15 23:26:44
475
原创 PySide6从0开始学习的笔记(四)QMainWindow
固定布局结构标题栏(默认包含窗口控制按钮:最小化、最大化、关闭);中心部件(central widget):窗口的核心内容区域(必须通过设置,否则中心区域为空);可选组件:菜单栏(menu bar)、工具栏(tool bar)、状态栏(status bar)、停靠窗口(dock widget,可拖拽停靠的辅助窗口)。核心功能支持菜单 / 工具栏 / 状态栏的快速创建与管理(如menuBar()获取菜单栏、显示状态栏提示);
2025-12-15 22:55:18
1238
原创 PySide6从0开始学习的笔记(三) 布局管理器与尺寸策略
在 PySide6 中,布局管理器(Layout)是实现界面自适应、控件合理排布的核心,而尺寸策略(Size Policy)则决定了控件在布局中如何响应尺寸变化。二者结合,就可以构建图形界面,从根本上解决手动低效率布局和频繁计算几何尺寸的痛点。运行后显示如下:在上面的代码中,使用setGeometry()指定了子部件在父容器中的位置,如果再增加一个新的子部件在父容器中,可能就要重新计算子部件的几何参数;
2025-12-14 18:04:09
1235
原创 PySide6从0开始学习的笔记(二) 控件(Widget)之容器类控件
控件(Widget)本质是PySide6 中的容器类控件是用于组织、管理其他子控件的核心组件,它们不仅能承载多个控件,还提供布局管理、分组显示、页面切换等功能。PySide6 的容器控件主要分为两类:以布局管理为核心(如 QWidget、QFrame);提供分组、分页、滚动等附加功能(如 QGroupBox、QTabWidget、QScrollArea 等)。
2025-12-14 12:24:14
998
原创 PySide6从0开始学习的笔记(一) 学前班
PySide6 是 Qt 框架的 Python 绑定库,用于开发跨平台(Windows/macOS/Linux/ 移动端等)图形界面(GUI)应用,核心优势是,且完全开源免费,适合从入门到企业级 GUI 开发。不知不觉,使用PySide6做开发也有几年了,但是都是被工作所逼,用一点学一点,知识面零散而杂乱,也走了不少弯路。是时候系统学习和总结一次了。由于本人是业余程序员,错漏之处还望指教。
2025-12-13 18:36:07
785
原创 自用pyside6项目模板
当界面文件发生增减、编辑、改变名称,再运行一次UI_process.py,半自动更新项目。界面的各个文件名称是由它所在的文件夹名用UI_process.py自动更新的。UI/UI_forms/目录下保存有界面文件,按照文件同名目录存放。3、运行UI_process.py,一键生成前端模块和后端基本框架的脚本。2、使用designer组态界面文件,保存在同名目录下。4、完成后端代码,在main.py中调用。1、创建项目的文件目录。
2025-12-12 21:46:19
347
原创 Python的getattr()和setattr()的用法
函数作用核心场景getattr()动态获取对象属性 / 方法运行时不确定属性名、插件调用setattr()动态设置 / 新增对象属性配置映射、动态绑定方法这两个函数是 Python 反射机制的核心,能极大提升代码的灵活性,尤其适用于需要动态处理对象属性的场景(如框架开发、配置管理、插件系统等)。
2025-12-11 11:38:02
461
原创 用于优化和改进YOLO11的一些方法
用 EMA 改进 YOLO11 的核心是训练时维护参数的指数移动平均,推理时使用平滑后的参数,结合 YOLO11 的模块特性(如 C2f、BN 层)做针对性适配,可在几乎不损失推理速度的前提下,提升检测精度和泛化能力。重点关注 EMA 衰减系数的调整、BN 缓冲区同步、检测头的平滑策略,能最大化改进效果。优先选低成本技巧:EMA、混合精度、余弦 LR、标签平滑(无需改结构,收益稳定);精度导向:ECA 注意力、小目标增强、C2f-NeXt(小幅增加计算量,精度提升明显);部署导向。
2025-12-07 20:41:07
926
原创 YOLO v11的学习记录(八) 使用自定义数据从头训练一个目标检测的模型
imags目录下保存图片,按照用途的不同又分为train(训练集)、var(验证集)和test(测试集),labels目录下保存与images目录下图片文件的同名txt文件,dataset.yaml是训练配置文件。model=yolo11n.yaml:使用的基础模型是 YOLOv11版本(yolo11n),但是不用它的预训练权重(从头训练),如果使用预训练权重,将该段指令改为:model=yolo11n.pt。当小批次运行成功后,修改和优化训练参数,进行正式训练。batch=16:每批处理 16 张图像。
2025-12-04 10:32:44
1071
原创 font = ImageFont.truetype(font_path, font_size)中,font_size的解释
font_size的单位默认是像素(Pixel)加载后的字体,其字符的 “基准高度” 约为 30 像素(这里的 “基准高度” 通常指字体设计中的 “em 框高度”,即字符整体占用的垂直空间,包含字母的上伸部分如bh的顶部,和下伸部分如gp的底部)。最终在图像上绘制文字时,文字的实际视觉大小由这个 30 像素的字号决定 —— 字号越大,文字在图片中显示得越醒目、占用空间越多;反之则越小。
2025-12-01 11:16:48
1001
1
原创 OpenCV之图像阈值化学习笔记
变体类型核心改进点适用场景OpenCV 原生支持关键优势基础 OTSU全局单阈值,最大化类间方差灰度分布双峰、光照均匀的图像是(THRESH_OTSU)简单、快速,无参数调优多阈值 OTSU分割多类别(k≥2)多灰度层级图像(如医学 CT)否(需第三方库)支持复杂场景的多目标分割加权 OTSU像素权重分配,偏向重要区域小目标、局部关键区域分割否(需自定义)提升关键区域的分割准确性自适应 OTSU局部子块独立计算阈值光照不均、局部背景差异大的图像否(需自定义)
2025-11-26 18:00:32
939
原创 OpenCV学习笔记之:调整ORB算法的参数以适应不同的图像
追求精度 / 鲁棒性:增大nfeatures、减小、增大patchSize;追求速度 / 实时性:减小nfeatures、增大、减小patchSize;最终需通过 “可视化 + 匹配率” 验证,确保参数适配具体图像和任务。
2025-11-25 12:13:14
1062
原创 opencv的模板匹配(Template Matching)学习笔记
BRIEF 的缺陷是像素对随机选取,旋转后相对位置变化;ORB 则预先生成一组 “固定的像素对模板”,并根据特征点的主方向 θ,将所有像素对围绕特征点旋转 θ 角,得到 “旋转后的像素对”。(优化:ORB 通过统计学习筛选出 128 对 “相关性低、区分度高” 的像素对,最终生成 128 位二进制描述子,平衡匹配精度与速度)。
2025-11-24 16:05:10
962
1
原创 YOLO v11的学习记录(七) 阶段小结
这份配置是YOLOv8s 分割模型的标准训练配置,核心逻辑是:使用预训练权重迁移学习,10 轮训练,批次 4,输入尺寸 640,启用混合精度和常用数据增强,训练过程中验证并保存最优模型。可根据实际需求调整(如增大batch、增加epochs、开启等),重点关注data(数据集配置)、epochs(轮数)、batch(批次)、device(设备)这几个关键参数。
2025-11-21 20:50:32
801
原创 YOLO v11的学习记录(六) 把标注好的大图切割成小图
有一个工程,从相机获取到训练图的尺寸是4096*3072像素,图上有很多密集的小目标,用anylabeling进行标注后,送进YOLO训练时出了问题,由于电脑显存不大,如果用原图尺寸训练,即使很小的batch_size,也会显存溢出,如果用YOLO默认的imgsz=640,则由于缩小倍数过大,小目标被过度压缩,造成学习效果不佳。解决问题的办法是将大图裁切成小图(640*640)后再训练,下面的脚本实现了这个目的,并且在裁切图片的同时将已经标注好的数据随图片裁切。
2025-11-19 23:02:13
406
原创 YOLO v11的学习记录(五) 使用自定义数据从头训练一个实例分割的模型
AnyLabeling导出coco格式还有个问题,就是图片比较多,分多次标注和导出时,它的分类标签的顺序可能是不固定的,某一个分类,比如“长颈鹿”,第一次导出时在annotations.json中的序号可能是2,下一次可能就是3,这就给后面的训练带来了隐患,有可能使模型认错种类。上一篇,使用AnyLabeling对图片进行了标注,当标注完成后,在图片所在的文件夹内会生成与每个图片同名的json文件,当再次使用AnyLabeling导入图片文件夹时,json文件会一同被导入,方便再次编辑和导出。
2025-11-15 18:45:11
1119
试试用pyqt做一个上位机软件,但愿不会烂尾(七)配套资源
2023-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅