
如何在 PyQt 中实现异步数据库请求
摘要:需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会阻塞界面的异步请求方法。 实现过程 在实现异步请求之前,需要先明确一下函数签名: def sqlRe
阅读全文

如何在 Python 中实现遗传算法
摘要:# 前言 遗传算法是一种模拟自然进化过程与机制来搜索最优解的方法,它由美国 John Holland 教授于20世纪70年代提出。遗传算法的主要思想来源于达尔文生物进化论和孟德尔的群体遗传学说,通过数学的方式,将优化问题转换为类似生物进化中的染色体基因的交叉和变异等过程,因此具有坚实的生物学基础和鲜
阅读全文

PyQt-Fluent-Widgets:一个 Fluent Design 风格的组件库
摘要:简介 这是一个使用 PyQt/PySide 编写的 Fluent Design 风格的组件库,包含最常用的组件,支持亮暗主题无缝切换。实际上此项目是从 Groove Music 项目剥离出来的子项目,github 仓库地址为 https://github.com/zhiyiYo/PyQt-Fluen
阅读全文

如何在 pyqt 中使用动画实现平滑滚动的 QScrollArea
摘要:前言 在之前的博客《如何在 pyqt 中实现平滑滚动的 QScrollArea》中,我们使用定时器和队列实现了平滑滚动。但是实现代码还是有一点复杂,所以这篇博客将使用 Qt 的动画框架 QPropertyAnimation 来实现相同的功能。 实现过程 SmoothScrollBar 滚动过程其实就
阅读全文

如何正确遵守 Python 代码规范
摘要:前言 无规矩不成方圆,代码亦是如此,本篇文章将会介绍一些自己做项目时遵守的较为常用的 Python 代码规范。 命名 大小写 模块名写法: module_name 包名写法: package_name 类名: ClassName 方法名: method_name 异常名: ExceptionName
阅读全文

如何在 Inno Setup 中关联多种文件格式
摘要:问题描述 Inno Setup 是一款十分强大的 Windows 安装程序制作软件,可以通过编写并编译 iss 脚本来创建安装包。之前都是直接将 Pyinstaller 生成的文件夹压缩为 zip 格式来发布,但是这样做存在一些问题,比如没有桌面和开始菜单快捷方式,没法关联支持的文件格式。而通过 I
阅读全文

如何在 pyqt 中读取串口传输的图像
摘要:前言 这学期选修了嵌入式系统的课程,大作业选择的题目是人脸口罩检测。由于课程提供的开发板搭载的芯片是 STM32F103ZET6,跑不动神经网络,所以打算将 OV7725 拍摄到的图像通过串口传输给上位机处理。关于人脸口罩检测可以参见上一篇博客《如何使用 Yolov4 训练人脸口罩检测模型》,本篇博
阅读全文

如何使用 Yolov4 训练人脸口罩检测模型
摘要:前言 疫情当下,出入医院等公共场所都被要求佩戴口罩。这篇博客将会介绍如何使用 Yolov4,训练一个人脸口罩检测模型(使用 Yolov4 的原因是目前只复现到了 v4 😇),代码地址为 https://github.com/zhiyiYo/yolov4。 Yolov4 Yolov4 的神经网络结构
阅读全文

如何解决 QMediaPlayer 占用歌曲导致 PermissionError: [Error 13] 的问题
摘要:问题描述 当我们使用 QMediaPlayer 播放歌曲时,歌曲文件的句柄会被占用。如果想使用 mutagen 库对正在播放地歌曲进行数据写入,就会出现下述问题: Traceback (most recent call last): File "D:\Anaconda\envs\Groove\lib
阅读全文

如何在 pyqt 中实现桌面歌词
摘要:前言 酷狗、网抑云和 QQ 音乐都有桌面歌词功能,这篇博客也将使用 pyqt 实现桌面歌词功能,效果如下图所示: 代码实现 桌面歌词部件 LyricWidget 在 paintEvent 中绘制歌词。我们可以直接使用 QPainter.drawText 来绘制文本,但是通过这种方式无法对歌词进行描边
阅读全文

如何在 python 中解决 ImportError: DLL load failed while importing win32api
摘要:问题描述 安装完 pywin32 之后,如果直接在代码中 import win32api 可能会报下述错误: ImportError: DLL load failed while importing win32api 在 stackoverflow 上关于该问题有各种各样的回答,有的好用,有的并不好
阅读全文

如何在 pyqt 中捕获并处理 Alt+F4 快捷键
摘要:前言 如果在 Windows 系统的任意一个窗口中按下 Alt + F4,默认行为是关闭窗口(或者最小化到托盘)。对于使用了亚克力效果的窗口,使用 Alt + F4 最小化到托盘,再次弹出窗口的时候可能出现亚克力背景和窗口阴影失效的问题,如下图所示: 所以本篇博客将会介绍在 PyQt 中捕获并处理
阅读全文

如何在 pyqt 中自定义工具提示 ToolTip
摘要:前言 Qt 自带的工具提示样式不太好看,就算加了样式表也时不时会失效,同时工具提示没有阴影,看起来就更难受了。所以本篇博客将会介绍自定义工具提示的方法,效果如下图所示: 实现过程 工具提示其实就是一个带了标签的窗口,为了给工具提示加上阴影,只要给窗口设置 QGraphicsShadowEffect
阅读全文

如何在 pyqt 中解决启用 DPI 缩放后 QIcon 模糊的问题
摘要:问题描述 如今显示器的分辨率越来越高,如果不启用 DPI 缩放,软件的字体和图标在高分屏下就会显得非常小,看得很累人。从 5.6 版本开始,Qt 便能支持 DPI 缩放功能,Qt6 开始这个功能是默认开启的。 启用 DPI 缩放后,文字不会有太明显的锯齿问题,但是使用 QIcon 设置的图标却会显得
阅读全文

如何使用 pyqt 实现 Groove 音乐播放器
摘要:前言 Win10 自带了一款很好用的音乐播放器 —— Groove 音乐,但是只能支持本地音乐的播放。2020年3月底到4月底,自己一直在学习 PyQt5,然后从 2020年5月开始,着手使用 PyQt5 编写增强版的 Groove 音乐。因为平时有课,所以大部分代码是在寒暑假编写的。 刚开始代码写
阅读全文

如何在 python 中解决报错 ImportError: The 'pyparsing' package is required
摘要:问题描述 今天在敲代码的时候遇到了一个问题,报错信息如下所示: File "D:\Python_Study\Github_Repositories\Hotspot-Detector\algorithm\net\ssd.py", line 7, in <module> import torch Fil
阅读全文

如何使用 python 爬取酷我在线音乐
摘要:前言 写这篇博客的初衷是加深自己对网络请求发送和响应的理解,仅供学习使用,请勿用于非法用途!文明爬虫,从我做起。下面进入正题。 获取歌曲信息列表 在酷我的搜索框中输入关键词 aiko,回车之后可以看到所有和 aiko 相关的歌曲。打开开发者模式,在网络面板下按下 ctrl + f,搜索 二人,可以找
阅读全文

对 python 中 @property 和计算属性的一些思考
摘要:前言 python 中提供了 @property 装饰器,可以将一个成员函数变为成员变量来访问,之前只是觉得这东西应该就只是为了 setter 和 getter 而存在的,但是学了 Vue 的计算属性后对这个装饰器有了新的见解。 计算属性 在 Vue 中提供了计算属性 computed,避免在模板中
阅读全文

如何处理 SSD 神经网络在小目标检测数据集上 mAP 和置信度较低的问题
摘要:前言 SSD 的神经网络结构很简洁,可以较好的实现多尺度的目标检测,但是对小目标物体的检测效果并不是很好。虽然有很多 SSD 的魔改版本,比如 FSSD 和 DSSD,提高了 SSD 在小目标检测上的表现,但是这里我们只讨论怎么使用 SSD 来更好地检测小目标,尤其是那些特征非常简单的目标。 YOL
阅读全文

如何在 pyqt 中实现全局事件总线
摘要:前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡,发出 switchToAlbumIntetrfaceSig 给父级部件专辑卡视图,因为专辑卡视图有
阅读全文