- 博客(499)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 python 下划线_汇总
本文详细总结了Python中下划线_的多种用途和约定。单下划线_常用于临时变量、交互式解释器结果、国际化翻译函数和模块导入控制;_var作为弱私有变量/方法的约定;__var实现名称修饰的强私有属性;__var__用于魔法方法和内置属性。文章还介绍了组合应用场景和对比表格,并强调了遵循社区约定和正确使用下划线的重要性,以提升代码可读性和安全性。
2025-07-02 11:13:28
158
原创 python 继承
Python多重继承中的方法解析顺序(MRO)由C3算法决定,遵循深度优先、从左到右和单调性原则。当子类继承多个父类时,同名方法的调用顺序可通过ClassName.mro()查看。解决冲突方法包括:显式指定父类方法、使用super()跳过某些类或重构继承结构。钻石继承问题中,MRO会确保公共基类只被访问一次。最佳实践建议使用组合替代继承、Mixin模式,并保持继承层次扁平。合理利用MRO机制能有效处理方法冲突,提高代码可维护性。
2025-07-01 22:09:29
135
原创 python下划线开头函数总结
Python中的双下划线命名有三种用途:1)魔法方法(如__init__)实现特殊行为;2)私有成员通过名称修饰(如__method变成_类名__method)实现封装;3)与单下划线_method的弱私有约定相区别。双下划线用于重要封装和内置操作,而单下划线仅作约定提示。合理使用这些命名规则能提升代码可读性和维护性。
2025-07-01 21:04:54
503
原创 python __doc__
Python的__doc__属性用于存储模块、类或函数的文档字符串(docstring),提供代码自描述功能。文档字符串位于对象开头,用三引号定义,可通过对象.__doc__访问。其核心作用包括:提供交互式帮助(如help())、支持自动文档生成工具、实现运行时自省。文档字符串可动态修改,推荐遵循PEP 257规范,区分单行简明描述和多行详细说明(含参数、返回值等)。相比Java/Javadoc和C++/Doxygen,Python的文档机制更直接,无需额外工具即可提取说明信息。合理使用__doc__能显著
2025-07-01 21:03:15
243
原创 python 调用C/C++动态库
Python通过ctypes模块调用C/C++动态库(DLL/SO),实现高效系统交互。主要步骤包括:动态库加载(CDLL/WinDLL)、函数参数/返回值类型声明、数据类型映射。实践案例涵盖:简单函数调用(如加法)、结构体处理(传递/返回)、数组指针操作(求和/修改)以及C++类封装(extern "C"接口)。典型问题包括路径错误、类型不匹配等,需确保库文件位置正确并严格定义数据类型映射。该方法广泛应用于性能敏感场景,如硬件控制和高性能计算。
2025-07-01 20:49:15
392
原创 Pyqt 所有的数据类型
本文系统总结了PyQt框架中的数据类型体系,涵盖基本类型、容器类型、日期时间、几何图形等类别,并分析了PyQt与Python原生类型的映射关系。详细对比了Qt特有类型(如QString、QList)与Python类型的异同,介绍了QVariant等特殊类型的应用场景,同时提供了类型转换规则和性能优化建议。通过模块化分类和实用示例,帮助开发者快速掌握PyQt数据类型的选择与使用方法,提高GUI开发效率和数据处理的可靠性。
2025-06-25 22:56:51
829
原创 pyqt setContentsMargins
本文介绍了PyQt布局中setContentsMargins方法的用法。该方法通过设置左、上、右、下四个像素值来调整布局内边距,示例代码sidebar_layout.setContentsMargins(10,20,10,20)表示左右边距10px,上下边距20px。合理的内边距设置能提升界面美观度,避免内容紧贴边界,增强可读性和视觉舒适度。文中还对比了有无边距的显示效果,并说明这是现代UI设计的常见做法,同时提供了统一设置和获取边距的方法。
2025-06-24 23:17:14
284
原创 pyqt多界面
本文介绍了一个基于PyQt5的多界面切换程序,采用侧边栏导航和QStackedWidget管理多个界面。程序主要特点包括:1) 左侧固定侧边栏包含可悬停、高亮显示的导航按钮;2) 主内容区通过堆叠窗口实现界面切换;3) 采用CSS美化UI,深色侧边栏与浅色主区域形成对比,支持中文显示;4) 结构设计具有良好扩展性,可轻松添加新界面。程序默认显示首页,点击不同按钮时主区域会切换显示对应界面,当前选中按钮会变为绿色背景。文章还提供了扩展建议,如添加真实功能控件、优化导航逻辑、增强视觉效果等,并包含界面截图和核心
2025-06-24 23:15:37
542
原创 pyqt小问题汇总
PyCharm创建项目时可选择继承全局Python包或创建独立虚拟环境。继承全局包允许项目使用已安装的包,而虚拟环境则隔离项目依赖,避免冲突。PyQt的setGeometry(x,y,width,height)方法设置控件位置和大小,参数依次为左上角坐标及宽高(像素)。相比resize()和move(),该方法同时控制位置和尺寸。顶级窗口坐标相对屏幕,子控件坐标相对父窗口。建议复杂界面使用布局管理器而非固定坐标。
2025-06-24 00:21:56
607
原创 pyqt f-string
Python的f-string(格式化字符串字面值)是Python 3.6引入的高效字符串格式化方式。它以f开头,允许在字符串中直接嵌入变量或表达式(用{}包裹),语法简洁直观。相比传统拼接或str.format(),f-string具有自动类型转换、支持表达式、格式化精度控制等优势。典型应用如拼接时间戳和用户输入的文本,生成格式化的消息输出。f-string还支持添加格式说明符进行对齐、截断等操作,成为Python中最常用的字符串格式化方法。
2025-06-23 00:07:12
590
原创 pyqt时间显示格式
Qt的QDateTime.toString()方法中,日期时间格式化需严格区分大小写:大写MM代表月份(1-12),小写mm代表分钟(0-59)。混淆会导致错误,如yyyy-mm-dd会把月份显示为分钟。常用格式字符包括:yyyy(年)、dd(日)、HH(24小时制)、hh(12小时制)等。这种设计避免歧义,如区分Month和Minute。正确格式如"yyyy-MM-dd HH:mm:ss.zzz",错误写法会导致数据解析错误。其他语言如Java、Python也有类似规则。
2025-06-23 00:00:26
682
原创 pyqt事件过滤器eventFilter
PyQt事件过滤器机制解析 PyQt的eventFilter提供了高效的事件拦截机制,允许在事件到达目标前进行处理。通过installEventFilter方法安装过滤器,在自定义eventFilter函数中可拦截多种事件(如鼠标点击、键盘输入、窗口大小变化等)。其核心特点是:非侵入式设计、运行时可动态调整、支持多控件复用。典型应用场景包括全局快捷键实现、统一事件处理逻辑等。使用时需注意避免过度拦截导致事件流程混乱,建议遵循单一职责原则,保持过滤器逻辑简洁。该机制既能实现复杂交互需求,又能保持代码的可维护性
2025-06-21 23:40:25
505
原创 pyqt logger类与界面分开
本文展示了一个将日志类和界面类分离的Python实现方案,包含两个核心文件:logger.py和main_window.py。logger.py定义了一个线程安全的日志记录器类Logger,支持不同级别的日志记录(DEBUG、INFO等),具备文件输出、日志轮转和调用者信息显示功能,并通过信号机制与GUI界面通信。界面类(未完整展示)通过PyQt5构建,将接收并可视化显示日志信息。这种分离设计遵循了单一职责原则,提高了代码的模块化和可维护性,同时实现了日志记录的线程安全性和丰富的功能特性。
2025-06-21 22:17:32
493
1
原创 Pyqt写一个日志类
本文介绍了一个基于PyQt5的线程安全日志记录系统(Logger)及其测试组件(LogTester)。Logger支持5种日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL),每种级别有对应的颜色标识和文本格式。系统提供了完整的日志记录功能,包括:多线程安全保护、日志文件输出(自动轮转)、调用位置追踪、GUI实时显示等。LogTester组件则通过5个不同颜色的按钮(Debug灰色、Info黑色、Warning橙色、Error红色、Critical紫色)方便开发者快速测试各日志级别
2025-06-21 00:43:10
384
原创 pyqt 简单条码系统
本文介绍了一个基于PyQt5和pyodbc的生产数据管理系统,主要用于物料绑定和查询操作。系统包含数据库管理、上料绑定、下料查询和日志管理四大功能模块,支持与SQL Server数据库交互。界面采用标签页设计,提供扫码信息录入、数据查询更新等功能,操作流程清晰,按钮状态颜色区分明确(绿色/成功、黄色/执行中、红色/错误)。系统具备自动日志记录、数据校验、事务管理等特性,适合生产环境使用。技术实现上采用面向对象设计,包含数据库连接管理、界面交互和日志系统等组件,确保数据一致性和操作可靠性。
2025-06-18 18:13:26
1030
原创 pyqt Logger设计
《Logger类:基于Qt信号槽的全局日志管理方案》摘要:Logger类通过Qt信号槽机制实现跨模块日志集中管理,核心设计包含log_message信号和log()方法。该方案采用解耦设计,支持跨线程安全通信,各模块只需调用log()接口发送日志,主窗口通过连接信号实现统一显示。相比全局变量方案更安全,比继承方案更灵活。文中还提供了日志分级、持久化存储等扩展建议,体现了Qt框架高内聚低耦合的设计优势,是Qt应用推荐的高效日志管理方案。
2025-06-18 14:30:58
431
原创 pyqt QMenuBar
本文详细介绍了PyQt5中菜单栏(QMenuBar)的使用方法,包含以下内容: 基本概念:说明菜单栏、菜单、菜单项和子菜单的关系 实现示例:通过代码展示如何创建包含多级菜单的完整菜单栏系统 关键功能:包括文件操作(新建/打开/保存)、编辑功能(撤销/复制/粘贴)和格式设置(字体/颜色) 交互设计:为菜单项添加快捷键、状态提示和事件处理 文章提供了一个可直接运行的示例,完整展示了菜单栏从创建到功能绑定的全过程,帮助开发者快速掌握PyQt5菜单栏的实现技术。
2025-06-17 23:39:57
622
原创 QMainWindow、QDialog 和 QWidget区别
PyQt5中的三种核心窗口类型对比: QMainWindow:主应用程序框架,包含菜单栏、工具栏和状态栏,适合复杂应用界面(如文本编辑器) QDialog:对话框窗口,支持模态/非模态交互,用于临时操作(如设置窗口) QWidget:基础容器组件,无预设布局,适合自定义控件或子组件 选择依据:主界面用QMainWindow,临时交互用QDialog,自定义组件用QWidget。三者分别对应完整应用框架、用户交互和灵活布局的不同需求。
2025-06-13 23:06:56
997
原创 PEP 8: E302 expected 2 blank lines, found 0
摘要:PEP 8 规范中的 E302 错误表示代码中缺少所需的空行分隔。本文解析了该错误的具体含义(函数/类定义间需2行空行),提供了错误示例及其修复方案(添加规定空行)。同时介绍了自动化修复工具(black/autopep8/IDE插件)和最佳实践建议,帮助开发者快速解决代码风格问题并保持规范的代码格式。
2025-06-12 22:28:25
542
原创 QCoreApplication QApplication
PyQt5中QCoreApplication.exec()和QApplication.exec()都用于启动事件循环,但应用场景不同。前者适用于无GUI的核心程序(如命令行工具),仅处理信号槽、定时器等非图形事件;后者则用于GUI应用,支持窗口交互等图形事件。两者继承关系明确,QApplication是QCoreApplication的子类。开发时需根据程序类型选择:非图形程序使用QCoreApplication.exec()减少资源消耗,图形界面必须使用QApplication.exec()。两种方法均可
2025-06-12 20:42:59
549
原创 sql server连接遇到的问题
摘要:文章分析了SQL Server连接失败的常见问题及解决方法。首先展示了一个使用pyodbc连接SQL Server的Python代码示例,然后详细列出了排查步骤:1)测试本地连接;2)关闭防火墙;3)检查网络连通性;4)验证服务器名称;5)确认SQL Server服务状态;6)启用TCP/IP协议;7)允许远程连接;8)检查SQL Browser服务或指定端口;9)测试端口连通性。最后建议若所有方法无效可考虑重装SQL Server。
2025-06-09 17:14:38
695
原创 pyqt tab contral
本文介绍了一个使用PyQt5构建的标签页控件示例程序。该程序展示了QTabWidget的多种应用场景,包括欢迎页、用户信息表单、数据表格和文本编辑器。程序采用垂直布局和分割器(QSplitter)设计,上方为标签页区域,下方为日志显示区。欢迎页提供程序简介和标签页操作按钮;用户信息页演示表单输入功能;数据展示页实现表格数据管理;文本编辑页支持多行文本处理。每个标签页都配有相应功能按钮,如添加/删除标签页、保存表单数据等。程序通过日志区域记录操作信息,帮助用户理解控件交互过程。
2025-06-09 16:54:02
319
原创 std::vector<>.emplace_back
(而非拷贝或移动)元素。这一特性显著提升了复杂对象的插入效率,尤其适用于构造代价较高的类型。是 C++11 引入的容器成员函数,用于在容器尾部。:若构造函数抛出异常,容器状态保持不变。不返回新元素的引用(C++17 起。在现代 C++ 编程中,建议优先使用。,除非需要明确的类型检查或兼容性保证。:若容器需要重新分配内存,仍需移动所有现有元素。
2025-05-20 23:10:31
733
原创 thread 的mutex优化
std::lock_guard 是 C++ 中用于管理互斥锁的 RAII(Resource Acquisition Is Initialization)工具。它在构造函数中自动加锁,并在析构函数中自动解锁,确保锁的生命周期与对象的作用域绑定。这种设计避免了手动管理锁时可能出现的资源泄漏和死锁问题,尤其在异常情况下仍能保证锁的正确释放。std::lock_guard 的自动解锁机制依赖于 C++ 的作用域规则,局部对象在离开作用域时会自动析构,从而释放锁。相比手动管理锁,std::lock_guard 提供了
2025-05-20 22:04:14
266
原创 电机的导程和脉冲之间的关系
例如,在一个由电机驱动丝杠来实现直线运动的装置中,当电机带动丝杠旋转一圈,丝杠上的螺母(与需要直线运动的部件相连)所移动的距离就是导程。导程越大,在电机转速相同的情况下,运动部件的直线运动速度越快,但精度可能会相对降低;导程越小,运动速度越慢,但可以实现更高的运动精度。总之,电机的导程和旋转一圈的脉冲数共同决定了电机驱动系统的运动精度和速度,在设计和调试电机控制系统时,需要根据具体的应用需求来合理选择和匹配这两个参数。在电机相关领域中,导程通常是针对直线电机或带有丝杠等传动机构的电机系统而言的。
2025-05-14 20:17:03
381
原创 windowsC++操作ADB
ADB(Android Debug Bridge)是一种强大的命令行工具,用于与Android设备进行通信和交互,广泛应用于调试、文件传输、应用管理等场景。本文详细介绍了ADB的工作原理、安装配置、常用指令分类(如设备管理、文件传输、应用管理、系统信息等)以及高级用法(如多设备管理、无线连接、批量执行命令等)。此外,还提供了常见问题的解决方案和注意事项,帮助开发者更高效地使用ADB。通过掌握这些指令,开发者可以显著提升Android应用的调试、测试和部署效率。
2025-05-13 22:07:13
1014
原创 vector是在栈上还是在堆上
在C++中,std::vector对象的存储位置取决于其定义方式:如果作为局部变量或类的非静态成员变量,则存储在栈上;如果使用new动态分配,则存储在堆上。然而,vector管理的元素始终存储在堆上,因为vector需要动态调整大小,堆内存更适合这种需求。vector使用RAII机制,确保对象析构时自动释放堆上的内存,避免内存泄漏。相比之下,固定大小的数组(如std::array或原始数组)则存储在栈上。总结如下:vector对象本身可存储在栈或堆上,而其元素始终存储在堆上。
2025-05-13 16:27:01
266
原创 MFC listctrl修改背景颜色
在 MFC 中修改 ListCtrl 控件的行背景颜色可以通过自绘(Owner-Draw)机制实现。主要步骤包括启用自绘属性、处理 NM_CUSTOMDRAW 消息,并在消息处理函数中根据行和列设置背景颜色。此外,可以通过创建自定义 CListCtrl 类来封装自绘逻辑,使代码更优雅。自定义类中还可以实现动态更新行颜色的功能,通过映射表存储每行的颜色并在自绘时应用。需要注意的是,自绘机制可能增加渲染开销,建议在数据量较大时使用虚拟列表优化性能。选中状态的颜色可能会覆盖自定义颜色,需通过判断 pLVCD-&g
2025-05-12 19:00:31
534
原创 deque底层数据结构以及和queue的异同
deque(双端队列)是一种高效支持两端插入和删除操作的数据结构,常见于C++标准库(STL)等编程语言。其底层实现采用分段连续存储,结合了数组和链表的优势,既支持O(1)时间复杂度的随机访问,又能在两端进行快速插入和删除。deque由中控器(指针数组)和数据块(固定大小的数组)组成,通过迭代器实现透明的随机访问。与vector相比,deque在两端操作上更高效,且避免了扩容时的元素复制开销;与list相比,deque支持随机访问,但中间插入/删除效率较低。deque适用于需要频繁双端操作和偶尔随机访问的场
2025-05-12 00:52:52
481
原创 halcon 基于相关性创建模板
本文展示了如何使用Halcon进行基于NCC(归一化互相关)的模板匹配。代码分为两部分:模板创建与初始化,以及实时匹配循环。首先,通过GigEVision2相机采集图像,并在图像上定义矩形ROI作为模板区域,创建NCC匹配模型。接着,在实时循环中,持续从相机采集新图像,并在图像中查找模板,显示匹配结果。匹配结果包括匹配位置、角度和分数,并通过仿射变换将模板区域对齐到匹配位置。最后,程序在匹配位置绘制十字线并显示匹配分数,实现实时模板匹配功能。
2025-05-12 00:42:57
225
原创 C++ RAII机制
RAII(Resource Acquisition Is Initialization)是一种编程范式,其核心思想是将资源的生命周期与对象绑定:对象创建时获取资源,对象销毁时自动释放资源。通过构造函数和析构函数的配对执行,RAII确保了资源管理的安全性和一致性。典型应用场景包括智能指针(如std::unique_ptr和std::shared_ptr)、文件操作(自动关闭文件句柄)和互斥锁管理(自动加锁和解锁)。RAII的优势在于异常安全、代码简洁和资源管理统一,避免了手动管理资源时的常见问题。自定义RAI
2025-05-11 22:50:03
480
原创 通俗的理解MFC消息机制
MFC(Microsoft Foundation Classes)中的消息机制是一种处理系统或用户触发事件的方式,类似于快递系统。消息机制的核心包括三个部分:消息循环、窗口过程和消息映射。消息循环不断检查并分发新消息,窗口过程负责接收消息,而消息映射则将消息与对应的处理函数绑定。这种机制实现了事件触发与处理的解耦,提高了程序的灵活性和效率。例如,当用户点击按钮时,MFC会通过消息循环、窗口过程和消息映射找到并执行相应的处理函数,从而完成关闭窗口等操作。MFC的消息机制使程序能够高效、有序地响应各种事件。
2025-05-11 00:15:30
942
原创 通俗的桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象与实现分离,使它们可以独立变化。通过组合而非继承的方式,桥接模式避免了类爆炸,增强了系统的灵活性和可扩展性。例如,在手机品牌与功能的场景中,桥接模式允许品牌与功能自由组合,而不是为每种组合创建新的子类。其核心思想是解耦抽象层与实现层,通过“桥”连接两者,从而支持多个维度的变化。该模式特别适用于需要支持多种平台、风格或功能的场景,符合“开闭原则”,减少代码重复,提升系统可维护性。
2025-05-11 00:09:03
646
原创 1 2 3 4 5顺序插入,形成一个红黑树
红黑树是一种自平衡的二叉搜索树,通过颜色标记和平衡性约束确保树高为O(log n)。其核心特性包括节点颜色(红或黑)、根节点和叶子节点为黑色、红色节点的子节点必须为黑色,以及从任一节点到叶子的路径包含相同数目的黑色节点。这些特性使得红黑树在插入和删除时通过颜色调整和旋转操作维持平衡,避免了普通二叉搜索树的退化问题。以顺序插入1、2、3、4、5为例,通过逐步调整和旋转,最终形成一棵符合红黑树性质的有效树结构。
2025-05-10 23:56:41
453
原创 为什么有了BST了,还要红黑树,红黑树有什么优点
BST(二叉搜索树)和红黑树都是常见的树形数据结构,但红黑树在某些方面对BST进行了优化,主要解决了BST在特定情况下可能出现的性能问题。虽然牺牲了一定的空间(每个节点多一个颜色位)和插入/删除时的调整开销,但在动态数据结构中表现更可靠,因此被广泛应用于各种高性能系统中。红黑树通过引入颜色标记和平衡性约束,解决了BST在特定情况下的退化问题,提供了稳定的。这种情况下,BST的效率大幅降低,无法满足高效查询的需求。,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在。维持平衡,避免了BST的退化问题。
2025-05-10 23:52:41
678
原创 数据库语句备忘
本文介绍了如何在SQL Server中通过循环插入数据库行,并通过一条语句批量更新表中特定位置的状态。首先,文章展示了如何使用WHILE循环将位置从201插入到200的示例代码。接着,文章提出了一个需求:将表中所有状态重置为0,同时将指定的若干个位置设置为1。为此,文章提供了一个简洁的SQL语句,使用CASE语句结合IN子句实现批量更新。该语句能够一次完成全表状态重置,并对指定位置进行状态设置,简化了操作流程。
2025-05-01 18:36:17
199
原创 相机内外参
相机的内外参共同作用,将实际世界中的三维坐标点与图像中的二维像素点建立起了对应关系,从而实现了从真实世界到图像空间的投影转换,这是计算机视觉中许多任务(如三维重建、目标定位、长度测量等)的基础。相机的内外参是相机标定过程中确定的重要参数,用于建立图像像素坐标与实际世界坐标之间的关系。
2025-04-14 15:42:32
559
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人