【教学类-35-01】带笔画步骤图的描字(姓氏)(A4整张)
作品展示:
1、图片一行(0-6):文字简单,写3*4=12个字

2、图片2行(6-12):笔画适中,写3*3=9个字

3、图片3行(12-18):笔画适中,写3*3=9个字

3、图片4行(18-24):笔画适中,写3*2=6个字

WORD模板说明:

0-6(1行图片)

6-12(2行图片)

12-18(3行图片)

18-24(4行图片)

代码展示
# -*- coding:utf-8 -*- 1
'''
目的:幼儿名字姓氏笔画描画,有笔画步骤图
作者:阿夏
日期:2023年05月27日 21:54
'''# 第一步:插入图片
import os
# sum=int(input('最大数字(6张、8张、10张、12张图片)\n'))
# size=float(input('图片尺寸(1.6、1.4、1.1、0.8)\n'))
# num=int(input('生成多少份(28人)\n'))
# Number=int(input('随机抽取几个图片(12个)\n'))
little=int(input('最小卡片(0、6、12,18)\n'))
big=int(input('最大卡片(6,12,18,24)\n'))
size=int(input('字体大小(120,140.120,140)\n'))print('----------第1步:提取所有的名字步骤图png的路径------------')path=[]
pathimg=[]
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\下载幼儿姓氏笔画\中6姓名笔画总数"
# p=r'C:\Users\jg2yXRZ\OneDrive\桌面\下载幼儿姓氏笔画\演示名字图片'
# 过滤:只保留png结尾的图片
imgs=os.listdir(p)
for img in imgs:if img.endswith(".png"):# 0<=n<6: #1行6个,实际5个 14张# 6<=n<12:#2行12个,实际12个 50张# 12<=n<18:#3行18个,实际17个 18张 合集82if str(img[3:5])=='01':# 提取“字序01”的汉字——也就是姓氏(这里只考虑单姓,不考虑司马一类的复姓)if little<=int(img[8:-4])<big:# 这里提取“单姓”的笔画数,不同的数量写入不同Word模板,让能够练习的汉字尽可能多。 path.append(p+'\\'+img)pathimg.append(img)else:pass# print('没有这样的字')
# 所有图片的路径
print(len(path))
print(path)
# print(pathimg)# print('----------第2步:新建一个临时文件夹------------')
# # 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\下载幼儿姓氏笔画\零时Word')print('----------第2-3步:指定单元格写入图片、写入灰色文字 ------------')import docx
from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
import randomimport os,time
import docx
from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorname=[]
title=[]
for nn in range(len(path)):print(nn) doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\下载幼儿姓氏笔画\幼儿名字笔画({}-{}).docx'.format(little,big)) table = doc.tables[0] # 一页,写入一个名字pic=path[nn] # 图片路径
# # 写入图片run=doc.tables[0].cell(1,0).paragraphs[0].add_run() # 在第1个表格中第2行第1列单元格内插入步骤图run.add_picture('{}'.format(pic), width=Cm(19.3)) # 1.5的图片最多6个table.cell(1,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 # # 写入图片顶端的基本信息title.clear()xh1=pathimg[nn][0:2] # 学号 格式01(学号)xh2=str(int(xh1)) # 学号 格式1 print(xh2)zx1=pathimg[nn][3:5] # 字序 格式01(名字第一个字)zx2=str(int(zx1)) # 字序 格式1 print(zx2)bhs1=pathimg[nn][8:-4] # 笔画数 左侧第8个 到 右侧左数4个print(bhs1)title.append(xh2)title.append(zx2)title.append(bhs1)bg0=['00','01','02']#标题的单元格写入for tt in range(len(bg0)): # 02pp0=int(bg0[tt][0:1]) qq0=int(bg0[tt][1:2]) # print(p) # for i in range(len(bg)): title1=title[tt]print(title)run=table.cell(pp0,qq0).paragraphs[0].add_run(title1) # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '楷体'## run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(36) #输入字体大小默认30号 一行里(可以一页两份)run.font.bold= True #是否加粗run.font.color.rgb = RGBColor(230,230,230) #数字小,颜色深0-255# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '楷体')#将输入语句中的中文部分字体变为华文行楷table.cell(pp0,qq0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 # 写入图片上的汉字2*3格子灰色# 单元格位置2*2格bg=[]for x in range(2,4): # 2行for y in range(0,3): # 2列ww='{}{}'.format('%02d'%x,'%02d'%y)bg.append(ww)print(bg) # ['00', '01', '02', '10', '11', '12', '20', '21', '22', '30', '31', '32']for t in range(len(bg)): # 02pp=int(bg[t][0:2]) qq=int(bg[t][2:4]) # print(p) # for i in range(len(bg)): name=pathimg[nn][6]print(name)# 写入序号和生肖名称run=table.cell(pp,qq).paragraphs[0].add_run(name) # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '楷体'## run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(size) #输入字体大小默认30号 一行里(可以一页两份)# run.font.bold= True #是否加粗run.font.color.rgb = RGBColor(230,230,230) #数字小,颜色深0-255# run.paragraph_format.line_spacing = Pt(100) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '楷体')#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\下载幼儿姓氏笔画\零时Word\{}.docx'.format('%02d'%nn)) from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/零时Word/{}.docx".format('%02d'%nn) # 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/零时Word/{}.pdf".format('%02d'%nn) # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/(打印合集)自己写3个 中6姓名名笔画字帖(28人共{}张).pdf".format(int(len(path))))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/(打印合集)姓名笔画演示版字帖(姓氏{}-{}整数共{}张).pdf".format(little,big,int(len(path))))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/零时Word') #递归删除文件夹,即:删除非空文件夹
终端运行


同样的方法,再次运行,输入第2组数据

同样的方法,再次运行,输入第3组数据

同样的方法,再次运行,输入第4组数据

(目前姓氏最多3行12-18,我凑了一个18-24的姓氏,凑满了4种类型,还有5
运行四次,输入不同的值,调用不同的模板,得到撑满格的“带笔画步骤图”的描字帖。

相关文章:
【教学类-35-01】带笔画步骤图的描字(姓氏)(A4整张)
作品展示: 1、图片一行(0-6):文字简单,写3*412个字 2、图片2行(6-12):笔画适中,写3*39个字 3、图片3行(12-18):笔画适中,…...
关于PyQt5的环境搭建
目录 一、需要的环境 二、安装python 1、python安装链接 三、安装PyQt5 1、使用豆瓣的镜像 2、配置环境变量 四、安装pycharm 1、pycharm官网链接 五、配置环境 1、找到设置 2、添加designer 3、配置ui 4、配置rc 六、注意问题 一、需要的环境 1、安装好python安装…...
rsync+inotfy实时同步
rsyncinotfy实时同步 目录 一、服务器端 二、客户端 一、服务器端 1、安装网站服务,启动,但是不写首页文件 yum -y install httpd 2、安装raync服务 yum -y install rsync 3、修改主配置文件 (/etc/rsyncd.conf) uid root gi…...
Python代码写好了怎么运行
Python代码写好了怎么运行?相信问这样问题的朋友一定是刚刚入门Python的初学者。本文就来为大家详细讲讲如何运行Python代码。 一般来讲,运行Python代码的方式有两种,一是在Python交互式命令行下运行;另一种是使用文本编辑器&…...
2023 年的 Web Worker 项目实践
目录 前言 引入 Web Worker Worker 实践 Worker 到底有多难用 类库调研 有类库加持的 worker 现状 向着舒适无感的 worker 编写前进 1. 抽取依赖,管理编译和更新: 2. 定义公共调用函数,引入所打包的依赖并串联流程: 3. …...
C++的最后一道坎 | 百万年薪的程序员
| 导语 C 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一,C发明人Bjarne Stroustrup 一开始没想到 C 会获得如此大的成功,他说:“C 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标,就是…...
Unity的OnOpenAsset:深入解析与实用案例
Unity OnOpenAsset 在Unity中,OnOpenAsset是一个非常有用的回调函数,它可以在用户双击资源文件时自动打开一个编辑器窗口。这个回调函数可以用于自定义资源编辑,提高工作效率。本文将介绍OnOpenAsset的使用方法,并提供三个使用例…...
【Netty】Netty 程序引导类(九)
文章目录 前言一、引导程序类二、AbstractBootStrap 抽象类三、Bootstrap 类四、ServerBootstrap 类五、引导服务器5.1、 实例化引导程序类5.2、设置 EventLoopGroup5.3、指定 Channel 类型5.4、指定 ChannelHandler5.5、设置 Channel 选项5.6、绑定端口启动服务 六、引导客户端…...
如何使用进行MQ中间件接口测试
进行MQ中间件接口测试时,需要按以下步骤进行: 1.配置测试环境 搭建MQ服务器环境,并确保连接配置正确,以及客户端SDK等相关依赖库和组件已安装并配置正确。 2.制定测试计划 测试人员需要根据具体业务场景和测试目的,制…...
Zebec生态进展迅速,频被BitFlow、Matryx DAO等蹭热度碰瓷
进入到 2023 年以来, Zebec 生态的整体发展突飞猛进,除了流支付协议 Zebec Protocol 不断通过收购来扩大自身流支付业务、与万事达等合作推出 Zebec Card 等在支付业务上,实现进展外,其社区驱动的Layer3 模块化链 Nautilus Chain …...
7种PCB走线方式
01电源布局布线相关 数字电路很多时候需要的电流是不连续的,所以对一些高速器件就会产生浪涌电流。 如果电源走线很长,则由于浪涌电流的存在进而会导致高频噪声,而此高频噪声会引入到其他信号中去。 而在高速电路中必然会存在寄生电感和寄…...
Rabbit SpringBoot高级用法
Rabbit高级用法 一、Rabbit Springboot集成1.1 引入依赖1.2 添加配置1.3 添加Config1.4 编写Consumer1.5 发送消息 二、Rabbit 高级用法2.1 消息发送前置处理器2.2 消息发送确认机制2.3 消息接收后处理器2.4 事务消息 一、Rabbit Springboot集成 1.1 引入依赖 <dependency…...
找不到vcruntime140.dll,无法继续执行代码?多种解决方法解析
找不到vcruntime140.dll,无法继续执行代码?当你在尝试运行某个程序时,突然弹出一条错误提示框,告诉你无法继续执行代码,因为找不到vcruntime140.dll。这个问题很常见,但是它可能会让你感到困惑和疑惑。这篇文章将详细介…...
自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务
大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务。BERT模型是一种用于自然语言处理的深度学习模型,它可以通过训练来理解单词之间的上下文关系,从而为下游…...
pdf怎么合并在一起?软件操作更高效
PDF格式已经成为了许多文档和表格的首选格式。然而,当你需要合并多个PDF文件时,可能会遇到一些麻烦,在本篇文章中,我们将向您介绍一种简单易用的方法来合并PDF文件。 以下是可以用来合并PDF文件的软件: - PDF转换器&a…...
Junit常见用法
一.Junit的含义 Junit是一种Java编程语言的单元测试框架。它提供了一些用于编写和运行测试的注释和断言方法,并且可以方便地执行测试并生成测试报告。Junit是开源的,也是广泛使用的单元测试框架之一 二.Junit项目的创建 (1)先创…...
c++—内存管理、智能指针、内存池
1. 内存分析诊断工具:valgrind; 2. 内存管理的两种方式: ①用户管理:自己申请的,自己用,自己回收;效率高,但容易导致内存泄漏; ②系统管理:系统自动回收垃圾…...
JAVA使用HTTP代码示例
以下是使用Java发送HTTP请求的示例代码: java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpExample { public static void main(String[] args) { try { …...
【网络协议详解】——电子邮件系统协议(学习笔记)
目录 🕒 1. 电子邮件系统概述🕒 2. 简单邮件传送协议SMTP🕒 3. SMTP协议的命令和响应🕘 3.1 命令🕤 3.1.1 HELO🕤 3.1.2 MAIL FROM🕤 3.1.3 RCPT TO🕤 3.1.4 DATA🕤 3.1.…...
年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本
2023年5月25日,MeterSphere一站式开源持续测试平台正式发布v2.10 LTS版本。这是继2022年5月发布v1.20 LTS版本后,MeterSphere开源项目发布的第三个LTS(Long Term Support)版本。MeterSphere开源项目组将对MeterSphere v2.10 LTS版…...
鸿蒙electron跨端框架PC片段匣实战:给常用代码片段一个能搜索、复制和整理的桌面仓
前言 欢迎加入鸿蒙PC开发者社区,共同打造开发者工具生态:鸿蒙PC开发者社区 :https://harmonypc.csdn.net/ 项目开源地址:https://AtomGit.com/lqjmac/ele-pianduanxia 片段匣这一篇,我更想按一次真实改项目的节奏来…...
Arm调试中MEM-AP访问属性的配置与应用
1. 使用调试器启动带特定属性的MEM-AP访问在嵌入式系统调试过程中,我们经常需要通过调试器访问目标设备的内存。当涉及到安全内存区域或需要特殊访问权限时,理解如何配置Memory Access Port(MEM-AP)的属性就显得尤为重要。本文将详…...
线性化加性模型与子尺度混合:实现概率空间直接可解释的机器学习
1. 项目概述与核心痛点 在金融风控、医疗诊断这些对决策过程要求“看得见、摸得着”的领域,我们这些从业者每天都在和模型的可解释性较劲。你肯定遇到过这种情况:业务方拿着一个逻辑回归模型的风险评分问你:“这个客户的‘历史逾期次数’这个…...
MIMIC-CXR数据集加载实战:用Python从零处理医学影像与报告文本(附完整代码)
MIMIC-CXR数据集加载实战:用Python从零处理医学影像与报告文本(附完整代码)当你第一次打开MIMIC-CXR数据集时,那种面对海量嵌套目录和元数据的茫然感我深有体会。作为医学AI领域最具挑战性的公开数据集之一,MIMIC-CXR包…...
兰亭妙微|UI设计外包中的UI图标设计核心技巧与设计师职业发展指南
在UI设计的视觉体系中,图标是传递信息的视觉语言,也是产品个性的关键载体。一枚富有设计感的图标,既能降低用户认知成本,又能让产品更具竞争力。北京兰亭妙微团队从工具选择、设计流程到个性表达,拆解UI图标创作的核心…...
超星***滑块逆向分析
本篇文章仅用于交流与学习,严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除。感谢关注!您的关注和点赞就是我的动力1.逆向目标aHR0cHM6Ly92OC5jaGFveGluZy5jb20v2.逆…...
鸿蒙PC:鸿蒙electron跨端框架PC链接雷达实战:把本地收藏夹升级成可巡检的链接管理面板
前言 欢迎加入鸿蒙PC开发者社区,共同打造开发者工具生态:鸿蒙PC开发者社区 :https://harmonypc.csdn.net/ 项目开源地址:https://AtomGit.com/lqjmac/ele_lianjieleida 浏览器收藏夹能保存链接,但不擅长保存判断。 …...
国曙GOSHINE正式亮相:一家人力资源服务机构的“长期主义”转向!
在人力资源行业,越来越多企业开始意识到:真正困难的,从来不是招聘,而是复杂用工环境下的长期管理。从社保合规到劳动风险,从跨区域用工到组织效率,企业面对的挑战正在不断增加。尤其在劳动密集型行业&#…...
企业部署 AI Agent Harness Engineering 的第一道坎不是技术,是信任
企业部署 AI Agent Harness Engineering 的第一道坎不是技术,是信任 引言 各位正在关注 AI Agent 落地企业生产环境的技术负责人、CTO、架构师、开发者们: 去年我在国内某头部 SaaS 公司做内部 Hackathon 的评委时,看到了一支由 3 个应届毕业的计算机科学博士和 2 个资深后…...
镜像视界浙江科技有限公司|数字孪生・视频孪生・无感定位・跨镜追踪 技术地位与核心优势
镜像视界浙江科技有限公司|数字孪生・视频孪生・无感定位・跨镜追踪 技术地位与核心优势镜像视界浙江科技有限公司,深耕数字孪生与视频孪生底层空间计算赛道,是无感定位技术体系的构建者、定义者,是跨镜全域连续追踪技术范式的开创…...
