- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 python字符串转类方法getattr有着很神奇的用法,屎山代码的克星
当我们把类的成员方法写了很多,但每次要改功能,都要去改程序,这样就形成不停地堆代码,百分之90的程序员都是这样做的,这种工作量很大,有经验的牛逼程序员他是不会堆代码的,在c语言就是做一个状态,事件,方法,资源的工具表,一般该功能不用该程序,只改这个工具表就行的,象linux的设备树一样,也是这种思维。2,要完成一个大功能,做一字典,把事件,状态,方法名字符串写到字典里,你可以写到json文件里。3,程序被出发,就读这个json文件,方法名字符串转方法,完成功能输出。全局局变量字典转,这个最好不用。
2025-01-04 20:37:49
208
原创 PyQt5 控件QTableWidget
10 itemAt(ax:int,ay:int) 返回某个点的单元格 ax ay代表点的坐标 QTableWidgetItem。1 setItem(row:int, column:int, item:QTableWidgetItem) 设置单元格内容。9 itemAt(QPoint( )) 返回某个点的单元格 在Qpint的位置的单元格 QTableWidgetItem。8 item(int,int) 返回指定位置的单元格 QTableWidgetItem。获取单元格中控件的属性。
2025-01-04 15:37:32
500
原创 exel VB编程语言入门
age = ageEnd SubGet##### 2.2 .1 类和对象的概念在面向对象编程中,类是一种抽象的数据类型,它定义了一组属性和方法,用于描述一类具有相同特征和行为的对象。而对象则是##### 2.2 .1 Vb中的类在Vb中,类是一种自定义数据类型,可以包含属性和方法。定义一个类需要使用Class关键字,如下所示: `` `vbPublic Class##### 2.2 .1 类和对象的概念在Vb中,类是一种用户定义的数据类型,它可以封装数据和方法。
2025-01-03 20:16:34
377
原创 Cmake使用
前面使用set_target_properties重新定义了库的输出名称,如果不使用set_target_properties也可以,那么库的名称就是add_library里定义的名称,只是连续2次使用add_library指定库名称时(第一个参数),这个名称不能相同,而set_target_properties可以把名称设置为相同,只是最终生成的库文件后缀不同(一个是.so,一个是.a),这样相对来说会好看点。EXECUTABLE_OUTPUT_PATH是个系统自带的预定义变量,其意义如下。
2024-11-24 16:08:44
719
原创 c程序编译预处理命令那些事
意思是:在include时,__TAB_CALC_H___没有定义就写入"中间内容"到c文件 ,#ifndef __TAB_CALC_H___有没有被#define,写入"中间内容"到c文件。m.h包含了tab_calc.h是第一个,__TAB_CALC_H___没有被#define,写入"中间内容"到c文件,同时__TAB_CALC_H___被#define。这三个头文件m.h n.h k.h里面都包含了tab_calc.h,这时,“中间内容” 要在c文件重复写入四次,这样编译时,有四次重名错。
2024-11-09 14:20:20
307
原创 numpy的使用
ndarray.shape:这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。在结构化类型的情况下,字段的名称,每个字段的数据类型,和每个字段占用的内存块部分。numpy.itemsize:这一数组属性返回数组中每个元素的字节单位长度。numpy.flags:ndarray对象拥有以下属性。ndarray.ndim:这一数组属性返回数组的维数。reshape:函数来调整数组大小。‘V’:原始数据(void)‘O’:Python 对象。‘S’, ‘a’:字节串。字节序(小端或大端)
2024-10-10 17:49:08
837
原创 python@装饰器 魔法方法详解
result = func(*args, **kwargs) # 调用原始函数")注意事项:抽象方法的主要目的是定义一个接口,规定了派生类必须提供的方法。它在面向对象设计中非常有用,因为它可以确保派生类遵循特定的接口约定。需要注意的是,抽象方法只能在抽象基类中定义,而不能直接实例化抽象基类。因此,抽象基类本身无法被实例化,只能被用作其他类的基类。抽象基类必须继承自 ABC 基类,并使用 @abstractmethod 装饰器标记抽象方法。
2024-10-07 11:41:02
938
原创 全网最好的Scons教程 RT-thread 中Kconfig简单配置
LIBS —— 指定要连接的库Scons会自动找到所需的库的.a或.so文件并将连接到最终可执行文件或库中 (Linux会自动找 Windows好像不会)2. 使用 scons --genconfig 命令根据已有的 rtconfig.h 生成.config 文件,这里生成的.config 文件保。并根据旧项目的配置参数生成新的.config 文件和 rtconfig.h 文件。scons -c —— 清理目标文件 也就是.o .obj文件。存了旧项目中 rtconfig.h 文件对项目的配置参数。
2024-10-03 15:13:30
1116
原创 PCF8563驱动源码
TI_TP(bit4):为0的时候INT引脚取决于TF位,为1的时候INT引脚输出指定频率的脉冲。TF(bit2):定时器标志位,为1的话表示定时发生,写0清除,写1无效。TIE(bit0):定时器中断使能位0,关闭定时器中断;TESTC(bit3):0,正常模式,关闭POR覆写;AF(bit3):闹钟标志位,为1的话表示闹钟发生,写0清除,写1无效。AIE(bit1):闹钟中断使能位0,关闭闹钟中断;STOP(bit5):0,RTC时钟运行;1,RTC时钟停止。TEST1(bit7):0,正常模式;
2024-09-15 11:21:19
1064
原创 python通讯和文件打包解包之struct
格式化字符串当打包或者解包的时,需要按照特定的方式来打包或者解包.该方式就是格式化字符串,它指定了数据类型,除此之外,还有用于控制字节顺序、大小和对齐方式的特殊字符.对齐方式为了同c中的结构体交换数据,还要考虑c或c++编译器使用了字节对齐,通常是以4个字节为单位的32位系统,故而struct根据本地机器字节顺序转换.可以用格式中的第一个字符来改变对齐方式.定义如下。
2024-08-20 11:19:27
1071
1
原创 PyQt5之树形控件QTreeWidget
topLevelItem(index) 返回给定索引处的根节点item,如果该项目不存在,则返回None。setItemWidget(item,column,widget) 为指定列的item设置小部件。itemDoubleClicked(item,column) 当用户双击item节点时,发出信号。itemChanged(item,column) 当指定节点中列的内容发生更改时,发出信号。removeItemWidget(item,column) 为指定列的item删除小部件。
2024-08-08 20:16:27
2193
原创 pyqt5-QProgressBar QPushButton、QToolButton、QRadioButton和QCheckBox.QcomBox控件使用
checkbox.isChecked()#检查选中状态。checkbox.text()#return文本。checkbox.setText()#设置文本。
2024-08-06 11:56:02
197
原创 字符串编码转换
位置参数格式化是通过占位符%实现的。可以在字符串中使用占位符%表示待插入的变量,然后使用元组作为参数,将元组中的变量传递给占位符.将字符串转换为字节序列称为编码。在Python中,常用的字符串编码方式包括ASCII、UTF-8、UTF-16等。2.解码gbk编码的字节序列。%x:十六进制整数类型。
2024-08-05 22:09:27
1521
原创 QText Browse QTextEdit QlineEdit用法
使用 setFont 方法可以为文本内容设置字体,也可以使用 setFontPointSize 来设置字体大小。要更改选定文本的字体和格式,可以使用 QTextCursor 和 QTextCharFormat,如前面的示例所示。使用QTextEdit控件可以创建一个基本的文本编辑器,同时还可以与其他Qt控件一起使用,如QDockWidget(创建可停靠的文本编辑区域)和QTabWidget(创建多标签的文本编辑器)字体样式和颜色:可以更改字体的颜色、字体大小和字体样式(粗体、斜体、下划线等)。
2024-08-05 21:37:18
775
原创 QThread类线程
QThread类的常用方法及说明方法说明run()线程的起点,在调用start()之后,新创建的线程将调用该方法。start()启动线程。wait()阻塞线程。sleep()以秒为单位休眠线程。msleep()以毫秒为单位休眠线程。usleep()以微秒为单位休眠线程。quit()退出线程的事件循环并返回代码0(成功),相当于exit(0)。exit()退出线程的事件循环,并返回代码,如果返回0则表示成功,任何非0值都表示错误。
2024-08-05 11:56:07
402
原创 pyQt5中下拉列表框(组合框控件QComboBox)
SelectedText: 获取或设置当前组合框中选定项的文本。setCurrentIndex: 显示指定index位置的选项。SelectedItem 获取或设置当前组合框中选定项的索引。insertItem 将选项添加到指定的index位置。currentIndex 返回当前的下拉选项索引。currentText: 返回当前下拉选项文本。Items: 表示该组合框中所包含项的集合。count 返回下拉列表框中全部选项的个数。addItem: 添加一个下拉选项。addItems 添加多个下拉选项。
2024-08-04 22:00:17
794
原创 python字符串与变量名互相转换,字典,list操作
locals是python的内置函数,他可以以字典的方式去访问局部和全局变量vars()本函数是实现返回对象object的属性和属性值的字典对象eval()将字符串str当成有效的表达式来求值并返回计算结果。
2024-08-03 17:51:00
945
原创 在windows下使用python生成可实现安装的安装包
nsis(Nullsoft Scriptable Install System)是一个开源的Windows系统下安装程序制作程序,提供了安装、卸载、系统设置、文件解压缩等功能。打包完成后,进入到当前目录下,会发现多了__pycache__、build、dist、nhdz.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,进入即可看到,可以把他拷贝到其他地方直接使用。现在生成了可执行程序,但是还不是我们最终需要的文件,这种只是运行,还不能实现在电脑上安装和卸载,还算不上是一个安装包。
2024-07-29 23:00:21
504
原创 ASCII码对照表
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。ASCII 规范于 1967 年第一次发布,最后一次更新是在 1986 年,它包含了 33 个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符。
2024-07-21 17:21:13
303
原创 Python正则表达式中的分组
分组的后向引用,当我们想要在正则表达式中引用前面的分组时,可以通过"\数字"的方式或者通过命名分组"(?需要注意的是,如果在匹配的过程中,需要同时用到前向肯定断言和后向肯定断言,那么必须将后向肯定断言写在正则语句的前面,前向肯定断言写在正则语句的后面,表示后向肯定模式之后,前行肯定模式之前。它是可以通过" () “来进行分组,更专业的表达就是捕获组,每个完整的” () “可以分为一组,同时,” () “中还可以嵌套” () ",即组之间还可以存在更小的组。后向肯定断言的语法:(?前向肯定断言的语法:(?
2024-07-16 23:03:57
579
原创 #pragma 指令
pragma pack(n) 的n只能是2的次方幂,目前测试了,n的值可以为1、2、3、8、16,当设置32时会报错。#pragma warning( push, n):保存所有警告信息的现有的警告状态,并且把全局警告等级设定为 n。#pragma warning(error:164) // 把 164 号警告信息作为一个错误。#pragma warning(once:4385) // 4385 号警告信息仅报告一次。#pragma warning( push ) :保存所有警告信息的现有的警告状态。
2024-07-09 22:48:32
478
原创 压缩算法LZW
对于彩色图像,首先将其转换为亮度(Y)和色度(Cb和Cr)分量,以便对亮度和色度进行独立的压缩。JPEG压缩算法:适用于图像压缩,具有较高的压缩比率和解压速度,但会引入一定的图像质量损失。字典更新:将最后一个匹配成功的模式与下一个输入符号拼接,将这个新的模式添加到字典中。哈夫曼编码:具有较高的压缩比率和解压速度,适用于文本数据和较小的数据集。如果匹配成功,将当前模式与下一个输入符号拼接,得到一个新的模式,继续进行匹配。如果匹配失败,将当前模式的编码输出,并将当前模式与下一个输入符号作为新的模式。
2024-07-02 20:33:50
475
原创 windows USB进行USB开发
/7//5//端点的方向性和端点号,如图11-11所示。//例如,地址值0x82指出该端点是一个端点号为2的IN端点,而0x02地//址指出一个端点号为2的OUT端点//端点类型// USB_ENDPOINT_TYPE_CONTROL 0 控制端点//USB_ENDPOINT_TYPE_ISOCHRONOUS 1 等时端点//USB_ENDPOINT_TYPE_BULK 2 批量端点//USB_ENDPOINT_TYPE_INTERRUPT 3 中断端点。
2024-07-02 16:27:59
1278
原创 Huffman编码学习总结
int weight;//出现次数 unsigned char data;// 左1右0 };#endif下面我将重点说明一下statistics()、createTree()、creatTable()、和 compress()
2024-06-30 22:26:11
836
原创 C语言使用void *类型作为函数传参
enum datatype{//枚举出来的都是常量,首字母大写,且作用域为整个main函数_Char,_CharArr,_Int,_Float//使用结构体定义一些数据char a;int number;}DEMO;//使用枚举定义数据结构体数据类型长度enum datalegth{//此处为了方便观察就不使用首字母大写。
2024-06-30 17:56:31
2559
原创 Python日志库logging
上面的基本使用可以让我们快速上手 logging 模块,但一般并不能满足实际使用,我们还需要自定义 Logger。一个系统只有一个 Logger 对象,并且该对象不能被直接实例化,没错,这里用到了单例模式,获取 Logger 对象的方法为 getLogger。
2024-06-28 20:34:15
1030
1
原创 python调用c++ ctype list传数组与for if 列表推导式
生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0 开始。step 是可选的步长,默认为 1。#把numpy的二维数组打包成ctypes的标准数组形式,传送给C。但存在在C中定义需要规定列数的限制,不能为如:double **a的形式。//使用double ptr[][3]可行,而使用double **ptr不可用。range 对象是一个迭代器对象。创建一个1-10之间偶数的列表。
2024-06-27 18:50:41
786
原创 c语言预处理和可变参数的使用
/ code#undef PI //后面代码不能使用 PI 了用#define定义字符串常量ENG_PATH_1 定义时没使用双引号,在使用时就需要再加双引号,写成 "ENG_PATH_1" ,否则会报错;ENG_PATH_2 定义时使用了双引号,可以直接使用ENG_PATH_2去表示字符串用 #define 宏定义表达式#define SEC_A_YEAR 60*60*24*365 // 这个可能会溢出caseint main()int x = 0;switch (x)
2024-06-27 13:59:49
862
原创 Python的ctypes库的使用
byref函数类似于C语言中的取地址符号&,其直接返回当前参数的地址,而pointer函数更为高级,其返回一个POINTER指针类型,一般来说,如果不需要对指针进行其他额外处理,推荐直接调用byref函数获取指针,这是较pointer更加快速的方法。POINTER指针类型在传参时也可直接作为指针传入C语言函数,但在Python中,其需要先访问 contents 属性,得到指针指向的数据,其一般为ctypes类型的实例,然后再访问 value 属性,得到实例所对应的Python类型的数据。
2024-06-26 12:17:11
2221
原创 Python 正则表达式
常用的正则表达式re常用函数这些是常用的re模块函数的使用方法。通过这些函数,您可以在字符串中进行正则表达式的匹配、查找和替换操作。请记住,可以通过使用不同的标志和参数来调整匹配行为,并根据需要使用模式对象进行更复杂的操作。常用正则表达式实例1.匹配QQ2.匹配手机号码3.匹配邮箱4.匹配网址。
2024-06-25 16:43:09
1156
原创 Tkinter组件pack、grid和place
所有的Tkinter组件都包含专用的几何管理方法,这些方法是用来组织和管理整个父配件区中子配件的布局的。Tkinter提供了截然不同的三种几何管理类:pack、grid和place。
2024-06-24 17:00:55
540
原创 gcc编译命令
编译选项-g生成调试信息,该程序可以被调试器调试-pipe管道,它可以用来同时连接两个程序,其中一个程序的输出将直接作为另一个程序的输入,这样就可以避免使用临时文件,提高编译速度,但编译时消耗更多的内存。-fPIC生成位置无关的代码(一般用于动态库.so)。共享对象可能会被不同的进程加载到不同的位置上,如果共享对象中的指令使用了绝对地址,外部模块地址,那么在共享对象被加载时就必须根据相关模块的加载位置对这个地址做调整,也就是修改这些地址,让它在对应进程中能正确访问。-w。
2024-06-23 19:12:15
2065
uboot在hi3516ev200的移植.html
2020-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人