自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (7)
  • 收藏
  • 关注

原创 PyQt/PySide UI实例和优化库-备存

本文整理了15个功能完整的PyQt/PySide界面模板项目,涵盖CAD设计、量化交易、虚拟货币、数据可视化等多个领域,提供专业界面设计参考(如CadQueryeditor、Algobot等)。同时推荐6个UI美化库/主题(如Qt-Material、QDarkStyleSheet),可快速实现Material Design、深色模式等现代化风格。这些开源项目均附带源码地址,适合作为GUI开发的学习参考或项目起点。

2025-12-14 10:16:08 405

转载 PySide6 中的系统托盘和 Mac 菜单栏应用程序

本文介绍了如何使用PySide6创建系统托盘/菜单栏应用程序。首先展示了一个基础示例,演示如何添加托盘图标和简单菜单。接着扩展为一个实用的颜色选择器应用,支持将选中的颜色以Hex、RGB或HSV格式复制到剪贴板。文中提供了完整代码示例,并解释了关键功能实现,包括防止应用自动关闭的设置方法。最后还建议了改进方向,如添加历史颜色记录功能。这些示例展示了如何利用Qt框架快速开发实用的系统托盘工具。

2025-12-13 12:44:29 10

转载 使用 PyInstaller 和 InstallForge 将 PySide6 应用程序打包到 Windows 平台

本教程详细介绍了如何将PySide6应用程序打包为可分发的Windows安装程序。主要内容包括:1. 使用PyInstaller工具进行应用程序打包的基本流程;2. 通过规范文件(.spec)自定义构建配置;3. 关键打包选项:设置应用程序名称、隐藏控制台窗口、单文件构建、添加应用图标;4. 处理相对路径问题,确保资源文件正确加载;5. 使用InstallForge创建专业的Windows安装程序。教程从简单示例开始,逐步扩展到包含图标、数据文件等更复杂的应用程序,提供了实用的打包解决方案。

2025-12-13 12:44:21 25

转载 使用 QResource 和 PyInstaller 和 PySide6 打包数据文件

本文介绍了使用PyInstaller打包PySide6应用程序的方法,重点讲解了Qt资源系统在打包过程中的应用。通过将UI文件、图标等资源编译为Python代码并利用QRC文件管理资源路径,可以有效解决跨平台应用程序中资源文件路径不一致的问题。文章详细演示了在QtDesigner中创建和管理资源文件,以及如何将用户界面和图标资源编译打包。最后介绍了使用InstallForge工具为打包好的应用程序创建Windows安装程序,包括添加卸载功能、快捷方式等步骤,确保应用程序能够以专业方式分发。这种方法特别适合需

2025-12-13 12:44:07 25

转载 PySide6 中的 QGraphics 框架简介

摘要:本文介绍了PySide6中QGraphics框架的基本使用方法,重点讲解了如何利用QGraphicsView、QGraphicsScene和QGraphicsItem创建2D矢量图形界面。文章通过具体示例展示了如何添加矩形、圆形等基本图形元素,设置其位置、颜色和堆叠顺序,并实现交互功能如拖动和旋转。还介绍了将图形视图集成到Qt布局中的方法,以及使用抗锯齿改善显示效果。该框架适用于数据可视化、2D设计工具等多种应用场景,具有处理复杂图形的高性能特点。

2025-12-13 12:43:50 11

转载 在 PySide6 中使用 Qt Signals 传输额外数据

Qt信号与槽机制允许通过中间函数修改信号传递的数据。当内置信号发送的数据不足时,可以使用lambda函数拦截信号,添加额外参数再转发给槽函数。常见应用场景包括:1)传递触发信号的对象本身;2)循环中创建控件时传递循环变量。后者需注意变量绑定问题,正确的做法是在lambda中使用命名参数(如lambda val=a:...)来捕获当前循环值,而非直接引用循环变量。这种方法扩展了Qt信号的灵活性,使槽函数能获取更多上下文信息。

2025-12-12 18:31:05 8

转载 在 PySide6 中嵌入来自 Qt Designer 的自定义控件

摘要:本教程介绍了如何在QtDesigner中使用占位符控件将PyQtGraph图表集成到PySide6应用程序中。首先在QtDesigner中添加QWidget占位符,通过"提升为"功能将其替换为PyQtGraph的PlotWidget。然后使用pg.Qt.loadUiType加载UI文件,创建一个继承自UI类和基类的自定义窗口类,在其中添加绘图方法。最后演示了如何绘制简单的温度-时间曲线图。这种方法同样适用于集成其他自定义控件到QtDesigner设计的界面中。

2025-12-12 18:30:04 35

转载 在 PySide6 中使用 QPropertyAnimation 为自定义控件添加动画

本文介绍了如何使用PySide6的QPropertyAnimation为自定义控件添加动画效果。首先讲解了Python和Qt中的属性概念,包括如何使用@property装饰器和QtCore.Property定义属性。接着详细介绍了QPropertyAnimation的工作原理,演示如何通过设置起始值、结束值和持续时间来创建基本动画,并展示如何使用QEasingCurve实现不同类型的缓动效果(如InOutCubic、OutBounce等)。文章还讲解了如何通过QParallelAnimationGroup和

2025-12-12 18:28:47 12

转载 在 PySide6 中创建自定义 GUI 组件

本文介绍了如何使用Qt的QPainter组件创建自定义GUI控件PowerBar电量计。通过组合内置QDial控件和自定义绘制的电量条,实现了一个可交互的复合组件。文章详细讲解了如何:1. 构建基本框架结构,将QDial与自定义绘制区域组合;2. 处理paintEvent事件实现动态重绘;3. 计算电量条位置和分段显示;4. 添加多种自定义选项,包括颜色、间距等参数;5. 实现鼠标交互功能;6. 封装QDial的标准接口。最终代码提供了一个功能完整的PowerBar控件,可作为模板用于开发其他自定义GUI组

2025-12-12 18:26:47 5

转载 PySide6 中的 QPainter 和位图图形

摘要:本文介绍了PySide6中QPainter的核心功能及其在绘制位图图形中的应用。主要内容包括:1. QPainter的基本用法,如绘制点、线、矩形、椭圆和文本;2. 通过设置画笔(QPen)和画刷(QBrush)控制图形样式;3. 构建一个简易绘图应用程序的完整示例,支持线条绘制和颜色选择;4. 实现喷绘效果的扩展功能。文章还对比了位图与矢量图形的区别,并展示了如何通过鼠标事件实现交互式绘图。这些技术为创建自定义控件奠定了基础。

2025-12-12 18:01:36 12

转载 在 PySide6 模型视图中显示表格数据

本文介绍了在PySide6中使用QTableView显示表格数据的方法,包括自定义QAbstractTableModel模型、数据格式化以及条件格式设置。文章详细讲解了如何通过嵌套列表、NumPy数组和Pandas数据框作为数据源,并展示了文本对齐、颜色渐变、图标装饰等高级显示功能。特别说明了如何利用模型-视图架构实现数据显示与业务逻辑的分离,以及如何通过响应不同角色类型来自定义单元格外观。最后,文章演示了如何集成NumPy和Pandas数据结构,包括显示行列标题等实用技巧,为构建数据密集型GUI应用提供了

2025-12-12 17:54:51 16

转载 PySide6 中的 ModelView 架构

与其纠结于如何划分二者的界限,不如在 Qt 中将视图和控制器合并在一起,创建一个模型/视图控制器 (Model/ViewController) 架构——为了方便起见,我们称之为“模型视图”。我们的待办事项应用运行良好,但它有一个致命的缺陷——一旦你关闭应用程序,它就会忘记你的待办事项。在这种情况下,模型会封装数据库接口,并直接查询数据库以获取要显示的数据。你可以使用任何“数据存储”来存储你的模型,例如标准的 Python 列表或字典,或者数据库(例如通过 SQLAlchemy)——这完全取决于你。

2025-12-12 17:45:44 18

转载 在 PySide6 中使用 QProcess 运行外部程序

到目前为止,我们已经了解了如何在单独的线程中运行任务,从而可以在不中断用户界面的情况下执行复杂的任务。目前我们已经执行了一个外部程序,并在程序启动和停止时收到了通知,但对程序的运行过程一无所知。这里我们将创建一个简单的 Python 脚本,然后可以从我们的应用程序中启动它。现在运行此程序,您可以启动该进程,并在进程完成后再次启动它。——本分步指南将引导您完成 Python 应用程序的打包,从简单的示例到完整的安装程序和签名可执行文件。流是一种类似文件的对象,用于从正在运行的进程中检索数据。

2025-12-12 17:44:41 15

转载 使用 QThreadPool 实现 PySide6 应用程序的多线程化

在 Python 中,还存在一个额外的问题:多个线程受全局解释器锁 (GIL) 的限制——这意味着未释放 GIL 的 Python 代码一次只能在一个线程中执行。但是,如果工作进程返回大量数据(例如,加载大型文件、执行复杂分析并需要(大量)结果,或者查询数据库),那么通过 GUI 线程传递这些数据可能会导致性能问题,最好避免这样做。由于您的应用已无法与操作系统通信,在 macOS 系统上,如果您点击您的应用,将会看到一个旋转的加载图标。不过,在接下来的章节中,您将使用 Qt 的线程类。

2025-12-12 15:30:30 23

转载 PySide6 中的 QResource 系统

不过,请记住,您可以将任何类型的数据打包为资源,包括应用程序所依赖的数据文件。通常,您的界面需要用于表示操作的图标,您可能还需要添加插图或品牌标识,或者您的应用程序可能需要加载数据文件来预先填充控件。为了能够从 Qt Creator 中使用 Qt 资源系统添加图标,您需要有一个活动的 Qt 项目,并将您的 UI 文件和资源文件都添加到该项目中。通过这种方式从资源文件中选择图标,可以确保它们始终有效,只要您将编译后的资源文件与您的应用程序一起编译和打包即可。资源文件加载完成后,您就可以从设计器属性中访问它。

2025-12-12 15:29:02 7

转载 使用 Qt Designer 和 PySide6 创建对话框

我们还学习了在 GUI 应用程序中使用和启动对话框的两种不同方法:一种是生成对话框的 GUI 代码,另一种是动态加载对话框。这在 Linux 或 macOS 系统中是按钮的常见顺序,但在 Windows 系统中则不然,在 Windows 系统中,按钮的顺序应该互换。通过设置伙伴,您可以提高对话框的可用性,因为您可以为用户提供一种快速在对话框和窗口中移动的方法。如果我们希望 GUI 应用程序在不同的平台上尽可能地呈现原生效果,那么我们需要为不同的平台部署不同的对话框,以便根据当前平台以正确的顺序显示按钮。

2025-12-12 15:27:54 31

转载 使用 Qt Designer 布局 PySide6 GUI

在接下来的几节中,我们将使用 Qt Designer 在窗体上布局控件,并为桌面应用程序构建美观优雅的图形用户界面 (GUI)。但在开始尝试 Qt 提供的各种布局管理器之前,我们首先要创建一个自定义控件,以便在学习本教程的过程中可视化布局。幸运的是,Qt 提供了一系列布局管理器,可以简化控件定位过程,并使您能够轻松创建任何类型的布局。例如,要创建一个对话框,底部有一排水平排列的按钮,窗体上还有许多其他垂直排列的小部件,您可以为按钮使用水平布局,为其余小部件使用垂直布局,然后将这些布局包裹在一个垂直布局中。

2025-12-12 15:27:03 33

转载 Qt Designer 和 PySide6 入门指南

这在很多情况下都很好用,但随着应用程序规模的扩大或界面的复杂化,以编程方式定义所有控件会变得有些繁琐。请注意,在 Qt Creator 中,您可以根据需要拖动并重新排列布局中的控件,或者选择不同的布局。由于使用 .ui 文件会抽象出特定于 UI 的代码,因此您可以使用相同的模式加载您设计的任何界面。您也可以跳过此步骤,它不会影响您的用户界面。在我们最初的应用程序中,我们了解到,要设置一个窗口的中心控件,您可以创建一个独立的类来处理 UI 文件的加载、窗口的创建和自定义,并包含应用程序的任何业务逻辑。

2025-12-12 15:26:06 21

转载 在 PySide6 中创建额外的窗口

本文介绍了在Qt应用中创建和管理多窗口的方法。主要内容包括:1. 创建新窗口的基本方法,通过实例化无父级的QWidget或QMainWindow实现;2. 窗口引用管理,避免因局部变量被销毁导致窗口关闭;3. 窗口切换技术,包括检查窗口存在性和显式调用close()方法;4. 持久窗口的创建和使用,在应用启动时初始化窗口并通过show()/hide()控制显示;5. 多窗口管理方案,包括为每个窗口创建独立切换方法和使用lambda函数的通用解决方案。文章提供了完整的代码示例,演示了如何实现这些功能。

2025-12-12 15:23:44 5

转载 PySide6 对话框和警告框

许多对话框都遵循我们刚才看到的简单模式——一条消息,带有用于接受或取消对话框的按钮。我们现在不再调用 `Dialog` 方法,而是直接调用 `Dialog` 方法,对话框就会被创建。布局,但这里介绍的方法可以确保您的对话框符合宿主桌面的标准(例如,确定按钮在左侧还是右侧)。)窗口,会显示在主应用程序前面,直到被关闭。要创建一个新的对话框,只需创建一个新的类对象,并将另一个控件(例如`<div>`)作为其父控件。`and`信号连接到我们子类中 ` <Dialog>`和 ` <Dialog>` 的处理程序。

2025-12-12 15:22:38 9

转载 PySide6 工具栏和菜单 — QAction

工具栏是由图标和/或文本组成的条形区域,用于执行应用程序中的常用任务,而通过菜单访问这些任务则较为繁琐。虽然一些复杂的应用程序,特别是 Microsoft Office 套件中的应用程序,已经迁移到上下文相关的“功能区”界面,但对于您创建的大多数应用程序而言,标准工具栏通常就足够了。它是免费提供的,您只需在分发应用时注明出处即可——当然,如果您有余钱,我相信设计师也会非常感激的。因此,通常的做法是,要么保留一个不可移除的工具栏,要么在菜单中提供一个替代界面来启用和禁用工具栏。这就是操作功能发挥作用的地方。

2025-12-12 15:21:30 16

转载 PySide6 布局

为了更清晰地展示布局,我们首先创建一个简单的自定义组件,用于显示我们选择的纯色。很方便的是,Qt 实际上提供了一个内置的 TabWidget,它可以直接实现这种布局——尽管是以控件的形式呈现。接下来,我们获取当前调色板(默认情况下是全局桌面调色板),并将当前颜色更改为我们传入的值所描述的。QStackedLayout — 使用时,仅最上面的控件可见,默认情况下,它是添加到布局中的第一个控件。setItem` 来控制当前显示的控件,方法是通过控件的索引(按控件添加顺序)或控件本身来设置项目。

2025-12-12 15:19:10 14

转载 PySide6 信号、槽和事件

在 Python 中,应用程序中的任何函数(或方法)都可以用作槽——只需将信号连接到它即可。在下面的示例中,我们将拦截 `<context-menu>` 控件中的 `<context-menu>`在窗口的组件中,我们将行编辑信号连接到组件的 `setText()` 方法。当控件发出信号时,我们的 Python 方法会被调用并接收信号中的数据。这些事件可以是多种多样的,例如按下按钮、输入框中的文本发生变化,或者窗口文本发生变化等等。因此,务必仔细检查信号的触发条件,以免在应用中使用信号时出现意外情况。

2025-12-12 15:17:49 15

转载 PySide6 创建第一个应用程序

本教程介绍了使用PySide6和Python创建桌面应用程序的基础知识。首先讲解了如何创建简单的窗口应用,包括导入必要的QtWidgets模块、初始化QApplication和显示QWidget窗口。重点说明了事件循环的工作原理,这是Qt应用程序处理用户交互的核心机制。接着介绍了QMainWindow的使用方法,包括如何继承该类创建自定义窗口、添加中央控件(如QPushButton)以及设置窗口标题。最后讲解了如何通过QSize对象控制窗口大小,包括固定尺寸和最小/最大尺寸限制的设置方法。这些内容为后续深入

2025-12-12 15:15:53 9

转载 PySide6入门教程

Qt Quick 最初是为移动应用程序开发的,它提供动态图形元素、流畅的过渡效果和各种特效,让您可以复刻移动设备上的各种 UI。默认情况下,您编写的任何代码都存在于同一个线程和进程中,这意味着长时间运行的代码实际上可能会阻塞 Qt 的执行,并导致您的 Python GUI 应用程序“卡死”。在本 PySide6 教程中,我们将介绍一些 Qt 的高级功能,您可以使用这些功能来改进您的 Python GUI。在本 PySide6 教程中,我们将从基本的位图图形入手,最终创建完全自定义的控件。

2025-12-12 15:10:47 9

原创 opencvsharp的rotation图像变形问题

结果发现,裁剪后旋转90度或者270,图像变成拉丝状,但是翻转,镜像等都没有问题。将裁剪的宽度和高度都设置为16的整数倍,问题完美解决,后续思考为啥,要去翻翻源码了。进一步思考,只有裁剪候进行旋转90或者270才会出问题。那么如何解决这个问题呢。因为探测器实际放置位置和api函数出来的图像不一致,需要进行90°旋转。采集平板探测器的图片,因为部分外延区域需要丢弃掉,因此进行了裁剪。考虑使用原图,结果旋转90,翻转镜像都没有问题。那么问题出在裁剪这一步,裁剪出来的图片完全正常。

2025-11-04 13:50:13 95

原创 could not find matlab runtime 2019

MWArray.dll文件在matlab安装路径的。c#调用matlab 的dll的问题。在matlab的安装路径下即可找到。

2025-09-25 17:40:56 194

原创 Two TorchSharp runtime packages have been referenced (both libtorch-cpu and libtorch-cuda)

摘要:解决VS2022报错"TwoTorchSharpruntimepackages"冲突问题。当同时引用libtorch-cpu和libtorch-cuda包时,系统会提示存在两个torch运行时包冲突。解决方法是:1)确认电脑配置(如仅CPU);2)在项目属性中删除GPU相关包(注释或移除libtorch-cuda引用);3)关闭并重新打开项目。此方法适用于CPU-only环境下的包冲突问题。

2025-08-14 10:17:59 241

原创 wpf 项目运行时图片不显示

摘要:图片在编辑时显示正常,但运行时无法加载。尝试添加"pack://application:,,,"前缀和清理方案均未解决。解决方法是将图片属性设置为"资源"而非"嵌入式资源"。正确的XAML引用方式为<ImageSource="pack://application:,,,/Images/bg.png"/>。

2025-07-06 17:58:10 260

原创 vs2019 measurement studio2019

1. 转到扩展 >> 管理>> NI Measurement Studio 安装>>扩展 >> 更改扩展的设置。并重新启动 Visual Studio。VS2019扩展库已经找不到了。2. 转到环境>>扩展并启用。

2024-11-29 16:20:51 916

原创 c# prism error 系统找不到指定的文件

prism 错误: 系统找不到指定的文件

2023-08-24 17:43:51 320 3

原创 WPF Prism-3

WPF Prism-3这里重写了一个适配器,用于stackpanel的适配,官方关于UI的原装适配器比较少。不过重写也比较简单,可以参考void adapt()方法。修改app.xaml.cs这里重写了适配器的配置方法,并注册到容器里面

2022-06-01 10:58:27 282

原创 WPF Prism-2

wpf prism 例子2

2022-06-01 10:31:48 303

原创 WPF Prism-1

wpf prism简介-例1

2022-06-01 10:24:28 523

原创 dotnet调用MeasureStudio

在使用.net 调用MeasureStudio的过程中,遇到了最大的问题就是,tdms is unlincesed.按照提示添加了licenses.licx, 编译的时候总是报错,lc.exe -1退出。下面是参考NI给出的几个网址,然而没什么暖用。网址一提示:如何创建licenses.licxhttps://zone.ni.com/reference/en-XX/help/372636F-01/mstudiowebhelp/html/licensingnetwithoutintegrati

2021-07-06 09:05:09 829

原创 c++学习系列-2

数学运算#include <cmath>常用函数:double cos(double); double sin(double); double log(double); double pow(double, double); double hypot(double, double);double sqrt(double); int abs(int); double fabs...

2020-05-08 16:57:58 218

原创 C++学习系列-1

typedef 声明给类型取别名, 如typedef double height;height body;enum AuthoLevel{Admin, Engineer, Operator, Vistor};AuthoLevel User;变量类型声明变量 int i; chart c; float f; double d; extern int exa;默认系...

2020-05-08 14:56:43 191

原创 C++学习系列-绪

最近因为项目的原因,需要用到C++,现在就开始启动学习模式吧变量类型类型 位 范围 char 1 个字节 -128 到 127 或者 0 到 255 unsigned char 1 个字节 0 到 255 signed char 1 个字节 -128 到 127 int 4 个字节 -2147483648 到 21...

2020-05-08 11:47:24 229

原创 vs2019 加载项目失败的问题

打开.sln显示项目加载失败,提示错误“无法找到.NET Core SDK.请确保已安装global.json中指定的版本”。先确定电脑安装的.NET Core SDK 版本打开win + r, 输入CMD, 打开CMD窗口,输入dotnet --list-sdks用记事本打开global.json, 将版本改成已经安装的版本,然后成功加载项目。...

2020-02-15 16:57:14 4509

转载 c# 委托(Func、Action) lamda(转)

定义:"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式好处:Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。具体内容:它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。写法:所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边...

2019-05-17 16:31:37 1680

虚拟相机操作说明V1.3.1.pdf

海康威视相机驱动V3.1版本,包含gige 和USB驱动,并且可以设置网路巨大帧。 windows版本

2020-04-27

Basler ace acA2500-14gm - 面阵相机.pdf

BASLER ACE ACA2500 manual,basler是一家德国相机 basler相机说明书,对相机的介绍和使用

2020-04-27

Hi3516EV200开发手册

Hi3516EV200开发手册

2022-08-09

MvVirtualCamera_1.3.1.0_20200327.zip

海康威视相机的虚拟驱动,在不用购买相机实体的情况下,安装虚拟相机驱动,即可获得相机的各项参数,可用于前期技术调研,编程模拟

2020-04-27

MVS_SDK_V3_2_0_VC90_Runtime_190626.zip

海康威视的基础相机驱动包,安装之后方能运行使用。虚拟相机的驱动也是建立在这个的基础上,只有安装这个包之后才能安装虚拟相机驱动

2020-04-27

ECG_DSP_src

DSP中心电图实现的源代码. #include "stdafx.h" #include "ECG_Info.h" #include "MeanDevMaxMin.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// IMPLEMENT_SERIAL(CEcg_Info,CObject,1); CEcg_Info::CEcg_Info() { Conclusion = ""; Confirm_By = ""; } CEcg_Info::~CEcg_Info()

2014-07-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除