自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (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 1011

原创 使用OpenCV与PySide(PyQt)的视觉检测小项目练习

OpenCV与PyQt(或PySide)的联合使用,各取所长

2024-07-07 22:43:09 734 1

原创 华硕产品资料的查询方法

https://www.asus.com.cn/supportonly/产品型号/helpdesk/也是醉了,自己的产品在自己的官网查询,还要讲究技巧。然后在服务支持和下载中心,同样搜不到。

2024-09-17 10:58:51 121

原创 SQLite的入门级项目学习记录(四)

首先用python脚本创建一个数据库,数据库中只有一个表,表中只有一列,共有26M条数据,每个数据的内容是当前系统时间的字符串,str(datetime.now()),这样可以大致模拟一个月的数据量。然后,用脚本操作数据库,增加新的数据条目,测试如果每个月生成数据库文件,是否能满足系统的速度要求(每秒10个数据)。这也就可以得出结论,本项目,每个月量的数据库,SQLite是完全可以满足写入速度要求的(即使每秒写一次也有足够的裕量)。然后,我将脚本修改一下,把每次写入的条数改为10和1000,耗时变化不大。

2024-09-15 23:18:26 490

原创 SQLite的入门级项目学习记录(三)

这条命令会创建一个名为 mydatabase.db 的数据库文件,并打开它;如果该文件不存在,SQLite 将创建一个新的数据库文件;这条命令创建一个名为 users 的表,包含三个字段:id(整数主键)、name(非空文本)和 age(整数)。

2024-09-14 22:50:49 649

原创 SQLite的入门级项目学习记录(二)

如果此时有其他线程已经持有该记录的写锁或者正在等待写锁,那么尝试获取写锁的线程将会被阻塞,直到前面的写操作完成并且锁被释放。需要注意的是,尽管可以创建多个游标,但SQLite数据库是单线程的,这意味着在任何给定的时间点上,只有一个游标的操作可以被执行。SQLite,对于同一个连接sqlite3.connect(db_file),可以同时创建多个游标,每个游标都是独立的,可以执行各自的SQL命令序列。:在多线程环境中,每个线程应该使用自己的数据库连接,并且在进行写操作时应该使用事务来确保数据的一致性。

2024-09-14 21:52:54 1136

原创 SQLite的入门级项目学习记录(一)

从来没有接触过数据库,但是最近有个项目要用到,从0开始记录一下学习的过程,以备忘。

2024-09-14 18:10:24 1272

原创 新电脑安装和配置pytorch、anaconda、CUDA、cuDNN、pycharm、OpenCV的过程记录

1、打开英伟达官网,输入显卡芯片型号,手动搜索并下载显卡驱动。​2、下载完成后安装驱动。

2024-09-10 23:52:11 1161 1

原创 Pytorch基础知识和函数的学习:图像卷积的理解和实践

卷积是深度学习中的一个重要概念,特别是在计算机视觉任务中广泛应用。卷积操作是通过一个卷积核(也称为滤波器)在输入数据上滑动,进行局部特征提取的过程。PyTorch提供了强大的卷积功能支持。

2024-08-25 12:11:19 1005

原创 pytorh基础知识和函数的学习:torchvision.transforms()

对图像进行填充,padding 可以是一个整数(统一填充)或一个 (left, top, right, bottom) 元组。将多个转换操作组合成一个转换操作,其中 transforms_list 是一个转换操作的列表,图像将按顺序应用这些操作。调整图像的大小,size 可以是一个整数(统一缩放到相同的尺寸)或一个 (height, width) 元组。将PIL图像或NumPy数组转换为PyTorch的张量,并将像素值范围从[0, 255]缩放到[0, 1]。随机水平翻转图像,p 是翻转的概率。

2024-08-24 20:13:27 326

原创 pytorh基础知识和函数的学习:图像文件的Tensor

图像由红RGB(255,0 , 0),绿RGB(0,255 , 0),蓝RGB(0,0 , 255),黑RGB(0,0 , 0)四种颜色组成,图中的每一个方格是一个像素点。脚本中transforms.ToTensor()的解释:将PIL图像或NumPy数组转换为PyTorch的张量,并将像素值范围从[0, 255]缩放到[0, 1]。看得出,图像文件的Tensor,由RGB三个通道组成,每个像素点与255的比例值构成了阵列的基本元素。图像的所有行、所有列构成了Tensor的阵列。

2024-08-24 17:09:29 457

原创 机器视觉学习笔记和过程记录:下载安装OpenCv

在打开的网页中选择与opencv、python以及操作系统相对应的版本。本机python是3.8,系统是64位win10,所以选择。3、为了方便,先将下载得到的文件放在C盘的根目录。回车,执行安装,出现下图,安装完成。5、安装opencv拓展库。,点击链接下载文件。

2024-08-24 11:41:29 333

原创 anaconda的power shell和prompt有什么区别?

CMD(命令提示符)是微软操作系统中的一个传统命令行界面,允许用户通过输入文本命令来执行各种操作。它在早期的 Windows 操作系统中(如 Windows XP)以及在现代的 Windows 系统中(如 Windows 10 和 11)都可以找到。

2024-08-24 11:18:40 837

原创 anaconda学习笔记:复制anaconda的base环境

所以有时候新建环境需要先用base环境克隆,那么问题来了:在anaconda的图形界面中,base环境的Clone按钮是灰色的。所以无法复制base环境。在anaconda的图形界面中,新建环境,可以看到,默认的包只有几个(这里是10个),像常用的numpy、pandas等等都没有,在使用过程中还需要再次安装。而base环境有几百个(325个)这么多。名称,这样就可以复制base环境。new_env 是自己新创建的。exist_env是已有的的。

2024-08-20 22:08:25 387

原创 WeTab AI桌面端的下载安装

下载并安装,桌面上就会出现wetab ai的桌面部件。

2024-08-18 11:20:07 336

原创 QT样式表中的后代选择器和子元素选择器的区别

性能考虑:在复杂的 UI 中,使用后代选择器可能会导致性能下降,因为它需要检查元素的所有后代。在 PySide(或 PyQt)的样式表中,后代选择器和子元素选择器用于指定样式规则应用于哪些元素,但它们在选择元素时的范围有所不同。特异性:子元素选择器提供了一种更精确的方式来定位元素,特别是当你只想影响直接的子元素而不是所有后代元素时。子元素选择器只会选择选择器 1 的直接子元素中匹配选择器 2 的元素。它不会选择更深层次的嵌套元素。范围不同:后代选择器选择的是所有后代元素,而子元素选择器仅选择直接的子元素。

2024-08-09 17:58:41 389

原创 QT样式表中的类选择器与类型选择器的区别

这里的类名与类型选择器中的类名一样, 不同的是, 类选择器的类名前面有一个( . ), 这种。这里使用了类选择器,单独设置了QWidget的背景色,它的派生类QPushButton并没有被设置。由于QPushButton是QWidget的派生类,所以上面的界面中,所有的部件都被改变了背景色。这条语句表示, 所有的 QWidget 类和它的派生类的对象, 它们的背景色被设置为红色。就只会改变QWidget的背景色,如果中有派生类,比如QPushButton,就不会改变。.类名 { 属性: 值;

2024-08-09 17:36:02 172

原创 Qt 的径向渐变的类QRadialGradient 学习笔记

fx 和 fy 是渐变焦点的坐标,通常表示渐变的起始位置。fx:0.5 和 fy:0.5 表示焦点也在控件的中心。默认情况下,焦点和中心是相同的,但你可以通过改变 fx 和 fy 的值来调整渐变的形状。stop 指定渐变中的颜色停靠点。stop: 0 表示渐变开始的位置,stop: 1 表示渐变结束的位置。cx 和 cy 是渐变中心点的位置,相对于组件的宽度和高度(取值范围是 0 到 1)。radius 是渐变的半径(也是相对于组件的宽度和高度,取值范围是 0 到 1)。

2024-08-01 21:47:44 436

原创 Qt 的线性渐变的类QLinearGradient 学习笔记

stop 后面跟的是渐变的位置(一个介于 0 到 1 之间的浮点值),以及对应的颜色值。例如,stop:0 rgba(255, 0, 0, 255) 表示渐变的起始点(0%)颜色为不透明的红色。这段代码创建了一个 QLinearGradient 对象,从渐变区域的左上角 (0, 0) 到右下角 (1, 1)。坐标 (0, 0) 表示渐变区域的左上角,(1, 1) 表示右下角。说明:x2 和 y2 定义了渐变结束点相对于渐变区域的坐标。坐标 (0, 0) 表示渐变区域的左上角,(1, 1) 表示右下角。

2024-08-01 17:53:30 739

原创 Qt Designer的尺寸策略学习笔记

所以一定要理解Minimum策略与minimumSize之间的关系,Minimum策略的含义是:小部件有一个尺寸的下限,当某种策略或设置使小部件的尺寸缩小时,尺寸不得小于minimumSize。将QFrame ax内设置为水平布局。子部件label1的策略为Minimum,minimumSize =100,maximumSize =400,子部件label2的策略为Expanding,其余默认。所以, 子部件label2的宽的就尽可能大,直到子部件label1的尺寸减小到minimumSize,100。

2024-07-30 21:58:54 1036

原创 Qt Designer,仿作一个ui界面的练习(四):编写代码

至此,完成了一个小项目的demo。这里没有像参考范例中那样搞专门的功能脚本文件夹,一方面是因为项目比较小没必要,另一方面,把功能函数放在主函数内更方便,因为可以直接在功能函数中操作一些项目范围内的全局变量,不用传递对象,更方便一些。三、使用RCC工具将资源文件media.qrc转为media_rc.py,并将其剪切粘贴至PYS文件夹(由于demo_ui.py是自动生成的,所以它对资源文件media_rc.py的调用时默认脚本文件夹)。PYS下存放脚本,SRC下存放资源文件,UIS下存放组态画面文件。

2024-07-30 10:19:21 435

原创 Qt Designer,仿作一个ui界面的练习(三):设定显示特性

color:#00000000 /*所有的QPushButton文字色为透明*//*将所有边框设置为无*/

2024-07-30 10:06:28 995

原创 Qt Designer,仿作一个ui界面的练习(二):部件内容的填充

3、同样的,在 topContent和topTimeShow里都拖入QLabel,命名为projectTitle和dateTimeShow,并设置布局和边距。5、使用复制btnHome粘贴的方式(快捷方式:按住ctrl键并拖动),在left_buttonsBox中继续拖入按钮:btnNew、btnSave、btnExit。1、在顶边栏的topLogo里面拖入一个QLabel(标签),命名为logoImage,删除标签的文字。4、右键点击left_buttonsBox,布局--垂直布局。

2024-07-29 23:17:45 406

原创 Qt Designer,仿作一个ui界面的练习(一):界面的基本布局

至此,完成了布局的基本框架设计,软件的显示主界面(appFrame)已经自动布满了QMainWindow,而且,当拖动改变QMainWindow的尺寸时,appFrame,也就是软件的显示主界面也随之改变。五、再放置三个QFrame,分别命名为leftFrame(左边栏)、topFrame(顶边栏)、mainContent(显示内容主区)contentBox(内容区,由左边栏和显示内容主区组成,是软件的操作内容显示区)。2、leftFrame(左边栏)的属性设置,将最小宽度设置为50。

2024-07-29 22:55:46 1490

原创 PySide(PyQt)使用QPropertyAnimation制作动态界面

【代码】PySide(PyQt)使用QPropertyAnimation制作动态界面。

2024-07-25 22:45:15 235

原创 PySide(PyQt)的QPropertyAnimation(属性动画)的应用实践

究其原因, 新的代码中,QPropertyAnimation 对象animation,它是函数animate()的一个局部变量,当函数animate()执行完毕后,并没有将该变量传递到主线程,所以造成运行异常。新的代码中,将动画部分的定义和设置、运行定义为一个函数animate(),并在主循环中运行。从逻辑和语法上看没有任何问题,但是,运行的结果,并没有执行预期的动画。这个代码中,定义了一个UI(QObject)的类,将其作为项目级别的信号和变量的容器。原理和语句都很简单。这个代码的运行是没有任何问题的。

2024-07-25 21:39:29 415

原创 PySide(PyQt)的QPropertyAnimation(属性动画)

QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果,比如移动、缩放或改变透明度等。QPropertyAnimation 是 Qt 动画框架的一部分,它能够让你在一定的时间内渐变地改变一个对象的属性。比如,你可以用它来改变一个窗口的位置、大小,或者改变一个按钮的颜色。QPropertyAnimation 允许你定义要动画化的属性,并设置它的起始值和结束值。

2024-07-25 15:39:07 1207

原创 PySide(PyQt)的小部件通过伪状态以及自定义特性改变外观

除了使用默认的伪特性,还可以自定义特性,通过改变自定义特性的方法改变外观。# 自定义的特性custom_attributecolor: red;""")# 槽函数和信号连接# 按钮1点击的槽函数# 按钮1点击的连接app.exec()color: red;# 按钮1点击的连接# 按钮1点击的槽函数这样,每点击一次按钮1,按钮2的自定义特性就反转,并根据样式表改变外观。

2024-07-24 09:23:07 913

原创 PySide的style().unpolish()与style().unpolish()

在 Qt 框架中,polish() 方法用于重新应用样式表或更新控件的外观。它的作用是强制控件重新应用样式表,以确保外观的更新能反映在控件上。这个方法通常在控件的样式表更改或控件的属性发生变化后使用(发生变化的属性与外观的改变有相关,例如:在样式表里有设置)。当你修改了控件的样式表(例如通过 setStyleSheet 方法),控件可能不会立即更新其外观。调用 polish() 方法可以确保样式表被重新应用,从而更新控件的外观。polish() 方法会触发控件的重新绘制,确保控件的外观与样式表的定义一致。

2024-07-24 09:20:37 227

原创 PySide(PyQt),自定义图标按钮

1、在Qt Designer中新建画面,并放置3个按钮(QPushButton)和一个分组框(QGroupBox)小部件,分别命名为btn_1,3、将按钮的宽高尺寸改为50*50,分组框的宽高尺寸改为90*170,并将按钮拖入分组框。8、使用uic工具和 RCC工具,将ui文件和图像资源转换成python的脚本文件.py。这个应用框架是我根据自己的使用习惯和能力范围创建的,你也可以根据自己的实际情况搭建框架。4、使用画图软件绘制图标,这里是使用的32*32,同一图标存为彩色和灰度两种格式。

2024-07-23 18:04:17 697

原创 python的csv库常用操作

csv 模块是 Python 标准库中的一个模块,用于处理 CSV(逗号分隔值)文件。它提供了简单易用的功能来读取和写入 CSV 文件。

2024-07-23 00:07:24 1410

原创 python的open()函数

None(默认值):这是 open() 函数的默认行为,它允许 Python 自动处理行结束符的转换。在文本模式下(默认模式),open() 函数会根据操作系统的不同,将行结束符自动转换为 \n(Unix 风格),\r\n(Windows 风格),或 \r(旧 Mac 风格)。''(空字符串):设置为空字符串时,open() 函数将不进行任何行结束符的转换。mode:文件打开模式,如 'r'(只读模式),'w'(写入模式),'a'(追加模式),'r+'(读写模式)等。file:要打开的文件的路径。

2024-07-22 22:37:11 242

原创 opencv,连续拍摄多张图像求平均值减少噪点

对于照度低或者相机质量差造成的密集的随机小噪点,可以通过拍摄多张图像求平均值的方法来减少噪点,获得较为清晰的画面。与高斯滤波的效果相比,这种方法在降噪的同时不会使画面模糊,甚至更锐利。

2024-07-21 17:40:23 378

原创 opencv读写路径包含中文的文件

opencv直接读写路径包含中文的文件会出错。这是因为cv2.imread内部处理文件路径时,默认使用的是 C++ 标准库中的字符串处理函数,这些函数对于非 ASCII 字符可能处理不当,导致无法正确读取文件。1、使用读取文件内容,可以绕过文件路径的编码问题。方法直接从文件系统中读取原始的字节流,并将其存储在一个numpy数组中。这样就避免了文件路径编码的问题。2、使用cv2.imdecode 方法从内存中的字节流解码图像数据。

2024-07-20 18:10:42 646

原创 PySide(PyQt),使用 QGraphicsOpacityEffect 设置小部件的整体显示透明度

在 PySide6 中,可以使用 QGraphicsOpacityEffect 类来实现整体显示透明度。制作一个动态闪烁的指示灯。

2024-07-19 17:07:49 271

原创 PySide在Qt Designer中使用QTableView 显示表格数据

在 PySide6 中,可以使用 Qt Model View 架构中的 QTableView 部件来显示和编辑表格数据。

2024-07-15 18:28:04 749 5

原创 python的seek()和tell()

是用来在文件中移动指针位置的方法。它的作用是将文件内部的当前位置设置为指定的位置。offset: 这是一个整数值,表示相对于起始位置的偏移量。如果是正数,表示向文件末尾方向移动;如果是负数,表示向文件开头方向移动;如果是0,表示移动到文件的起始位置。whence: 这是一个可选参数,指定偏移量的参考位置。它有三个可选值:从文件开头偏移: 从文件末尾偏移: 从当前位置偏移: 方法返回的是文件指针的当前位置(以字节为单位)。在处理文件时, 是一个非常有用的方法,特别是在需要跳转

2024-07-13 23:00:30 485 1

原创 python的readline()和readlines()

将文件指针移到文件末尾# 获取文件末尾位置lines = []# 逐行向前读取文件内容,直到达到指定的行数或文件开头# lines.append(f.readline().rstrip('\n')) 用readline()的方法lines = f.readlines() # 用readlines()的方法break# 返回结果,注意如果用readline()的方法要逆序输出# return lines[::-1] # 逆序输出# 调用函数并显示最后5行内容。

2024-07-13 22:56:39 1200

原创 PySide(PyQt),csv文件的显示

在Qt Designer中新建QMainWindow,命名为csvShow.ui。QMainWindow上有两个部件:widget_csv和btn_exit。

2024-07-13 18:09:47 325

原创 PySide(PyQt)判断QLineEdit的输入是否合规

判断QLineEdit的输入是否符合要求,比如是否为整数或者浮点数。

2024-07-12 11:44:34 391

pytorch基础知识和函数的学习:卷积的基本理解

pytorch基础知识和函数的学习:卷积的基本理解

2024-08-25

pytorh基础知识和函数的学习:图像文件的Tensor

pytorh基础知识和函数的学习:图像文件的Tensor

2024-08-24

Qt Designer,仿作一个ui界面的练习(四):编写代码文章的资源

Qt Designer,仿作一个ui界面的练习(四):编写代码文章的资源

2024-07-30

PySide(PyQt)使用QPropertyAnimation制作动态界面

PySide(PyQt)使用QPropertyAnimation制作动态界面

2024-07-25

PySide(PyQt),自定义图标按钮的资源

PySide(PyQt),自定义图标按钮的资源

2024-07-23

Pyside使用Qt Designer和uic工具的基本框架的demo

Pyside使用Qt Designer和uic工具的基本框架的demo

2024-07-17

pyside6的特殊按钮(互锁、自锁、独占模式)文章的ui资源

pyside6的特殊按钮(互锁、自锁、独占模式)文章的ui资源

2024-06-20

pyside6的特殊按钮(互锁、自锁、独占模式)文章的ui资源

pyside6的特殊按钮(互锁、自锁、独占模式)文章的ui资源

2024-06-19

pyside6自定义部件库和软件框架进度记录

pyside6自定义部件库和软件框架进度记录的资源

2024-04-16

pyside6自定义部件库和软件框架进度记录v2

pyside6自定义部件库和软件框架进度记录v2

2024-04-16

pyside6自定义部件库和软件框架进度记录v1

pyside6自定义部件库和软件框架进度记录v1

2024-04-11

pyqt5的组合式部件制作(四)的资源

pyqt5的组合式部件制作(四)的资源

2023-11-22

pyqt5的组合式部件制作(四)资源

pyqt5的组合式部件制作(四)资源

2023-11-22

pyqt5的组合式部件制作(二)

pyqt5的组合式部件制作(二)

2023-11-08

pyqt5的组合式部件制作(一)阶段资源

pyqt5的组合式部件制作(一)阶段资源

2023-11-07

我用PYQT5做的第一个实用的上位机项目(五)

我用PYQT5做的第一个实用的上位机项目(五)

2023-10-09

我用PYQT5做的第一个实用的上位机项目(四)配套资源

我用PYQT5做的第一个实用的上位机项目(四)配套资源

2023-10-04

我用PYQT5做的第一个实用的上位机项目(三)

我用PYQT5做的第一个实用的上位机项目(三)的资源文件

2023-10-03

我用PYQT5做的第一个实用的上位机项目(二)资源

我用PYQT5做的第一个实用的上位机项目(二)资源

2023-09-28

使用PYQT5简单制作动态仪表盘

使用PYQT5简单制作动态仪表盘

2023-09-17

PYQT制作动态时钟,使用了直接读取和旋转图片的方法

PYQT制作动态时钟,使用了直接读取和旋转图片的方法

2023-09-15

用Qlabel制作的自定义带图片的按钮

用Qlabel制作的自定义带图片的按钮

2023-08-22

博途利用MOVE-BLK-VARIANT实现混合数据类型的块移动

MOVE_BLK_VARIANT范例

2023-06-26

python与PLC通信的数据转换

python与PLC通信的数据转换

2023-06-23

数组的创建以及将二维数组转换成为一个连续的一维数组

数组的创建,选择和不选择输入连接的区别。以及将二维数组的两个维连接起来转换成为一个连续的一维数组

2023-04-17

LABVIEW调用C++的dll

编译好的深度学习dll,用labview调用

2023-04-17

西门子STL中文编程手册

西门子PLC的STL中文编程手册,带目录

2023-03-27

试试用pyqt做一个上位机软件,但愿不会烂尾(八)的资源

两个功能简单的测试页面,先不考虑界面的美化,以实现简单功能为目标。美学和人体工程学的最后再说。

2023-03-20

试试用pyqt做一个上位机软件,但愿不会烂尾(七)配套资源

pyqt的进度条显示只能接受整数输入,不能直接显示小数,采用了折中的办法,重新定义了进度条的text()函数。然后将输入的整数除以10的倍数,传递到text()函数中进行显示,比如说想显示一小数就除以10。顺便搞了几种常用的颜色方案,封装入库,以备调用。

2023-03-17

试试用pyqt做一个上位机软件,阶段5的源码

试试用pyqt做一个上位机软件,阶段5的源码

2023-03-11

试试用pyqt做一个上位机软件,但愿不会烂尾(四)的资源

试试用pyqt做一个上位机软件,但愿不会烂尾(四)的资源

2023-03-08

自制PYQT5指示灯资源

自己使用的指示灯资源,用的时候按住CTRL直接拖到新窗口即可

2023-03-08

试试用pyqt做一个上位机软件,但愿不会烂尾(二)资源

试试用pyqt做一个上位机软件,但愿不会烂尾(二)资源

2023-03-08

配套的资源文件,记录一下过程

学习简单SCADA用到的资源

2023-03-08

labview检测并显示移动物体的练习,有参考别人

abview检测并显示移动物体,并算出最大的物体移动速度

2022-07-31

用labview检测移动物体的练习程序

用IMAQ Absolute Difference将连续采集的图像相邻帧的像素差显示出来,可用于运动目标检测

2022-07-30

LABVIEW强制类型转换以及强制转换为类型二者的区别

初学,有些概念比较模糊,做了一个小程序对二者的区别加以总结

2022-05-27

labview字符串到数字的转换

初学labview,共同探讨一下

2022-05-21

空空如也

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

TA关注的人

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