当前位置: 首页 > news >正文

【教学类-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整张)

作品展示&#xff1a; 1、图片一行&#xff08;0-6&#xff09;&#xff1a;文字简单&#xff0c;写3*412个字 2、图片2行&#xff08;6-12&#xff09;&#xff1a;笔画适中&#xff0c;写3*39个字 3、图片3行&#xff08;12-18&#xff09;&#xff1a;笔画适中&#xff0c;…...

关于PyQt5的环境搭建

目录 一、需要的环境 二、安装python 1、python安装链接 三、安装PyQt5 1、使用豆瓣的镜像 2、配置环境变量 四、安装pycharm 1、pycharm官网链接 五、配置环境 1、找到设置 2、添加designer 3、配置ui 4、配置rc 六、注意问题 一、需要的环境 1、安装好python安装…...

rsync+inotfy实时同步

rsyncinotfy实时同步 目录 一、服务器端 二、客户端 一、服务器端 1、安装网站服务&#xff0c;启动&#xff0c;但是不写首页文件 yum -y install httpd 2、安装raync服务 yum -y install rsync 3、修改主配置文件 &#xff08;/etc/rsyncd.conf&#xff09; uid root gi…...

Python代码写好了怎么运行

Python代码写好了怎么运行&#xff1f;相信问这样问题的朋友一定是刚刚入门Python的初学者。本文就来为大家详细讲讲如何运行Python代码。 一般来讲&#xff0c;运行Python代码的方式有两种&#xff0c;一是在Python交互式命令行下运行&#xff1b;另一种是使用文本编辑器&…...

2023 年的 Web Worker 项目实践

目录 前言 引入 Web Worker Worker 实践 Worker 到底有多难用 类库调研 有类库加持的 worker 现状 向着舒适无感的 worker 编写前进 1. 抽取依赖&#xff0c;管理编译和更新&#xff1a; 2. 定义公共调用函数&#xff0c;引入所打包的依赖并串联流程&#xff1a; 3. …...

C++的最后一道坎 | 百万年薪的程序员

| 导语 C 的起源可以追溯到 40 年前&#xff0c;但它仍然是当今使用最广泛的编程语言之一&#xff0c;C发明人Bjarne Stroustrup 一开始没想到 C 会获得如此大的成功&#xff0c;他说&#xff1a;“C 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标&#xff0c;就是…...

Unity的OnOpenAsset:深入解析与实用案例

Unity OnOpenAsset 在Unity中&#xff0c;OnOpenAsset是一个非常有用的回调函数&#xff0c;它可以在用户双击资源文件时自动打开一个编辑器窗口。这个回调函数可以用于自定义资源编辑&#xff0c;提高工作效率。本文将介绍OnOpenAsset的使用方法&#xff0c;并提供三个使用例…...

【Netty】Netty 程序引导类(九)

文章目录 前言一、引导程序类二、AbstractBootStrap 抽象类三、Bootstrap 类四、ServerBootstrap 类五、引导服务器5.1、 实例化引导程序类5.2、设置 EventLoopGroup5.3、指定 Channel 类型5.4、指定 ChannelHandler5.5、设置 Channel 选项5.6、绑定端口启动服务 六、引导客户端…...

如何使用进行MQ中间件接口测试

进行MQ中间件接口测试时&#xff0c;需要按以下步骤进行&#xff1a; 1.配置测试环境 搭建MQ服务器环境&#xff0c;并确保连接配置正确&#xff0c;以及客户端SDK等相关依赖库和组件已安装并配置正确。 2.制定测试计划 测试人员需要根据具体业务场景和测试目的&#xff0c;制…...

Zebec生态进展迅速,频被BitFlow、Matryx DAO等蹭热度碰瓷

进入到 2023 年以来&#xff0c; Zebec 生态的整体发展突飞猛进&#xff0c;除了流支付协议 Zebec Protocol 不断通过收购来扩大自身流支付业务、与万事达等合作推出 Zebec Card 等在支付业务上&#xff0c;实现进展外&#xff0c;其社区驱动的Layer3 模块化链 Nautilus Chain …...

7种PCB走线方式

01电源布局布线相关 数字电路很多时候需要的电流是不连续的&#xff0c;所以对一些高速器件就会产生浪涌电流。 如果电源走线很长&#xff0c;则由于浪涌电流的存在进而会导致高频噪声&#xff0c;而此高频噪声会引入到其他信号中去。 而在高速电路中必然会存在寄生电感和寄…...

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,无法继续执行代码&#xff1f;当你在尝试运行某个程序时&#xff0c;突然弹出一条错误提示框&#xff0c;告诉你无法继续执行代码&#xff0c;因为找不到vcruntime140.dll。这个问题很常见&#xff0c;但是它可能会让你感到困惑和疑惑。这篇文章将详细介…...

自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下自然语言处理实战项目8- BERT模型的搭建&#xff0c;训练BERT实现实体抽取识别的任务。BERT模型是一种用于自然语言处理的深度学习模型&#xff0c;它可以通过训练来理解单词之间的上下文关系&#xff0c;从而为下游…...

pdf怎么合并在一起?软件操作更高效

PDF格式已经成为了许多文档和表格的首选格式。然而&#xff0c;当你需要合并多个PDF文件时&#xff0c;可能会遇到一些麻烦&#xff0c;在本篇文章中&#xff0c;我们将向您介绍一种简单易用的方法来合并PDF文件。 以下是可以用来合并PDF文件的软件&#xff1a; - PDF转换器&a…...

Junit常见用法

一.Junit的含义 Junit是一种Java编程语言的单元测试框架。它提供了一些用于编写和运行测试的注释和断言方法&#xff0c;并且可以方便地执行测试并生成测试报告。Junit是开源的&#xff0c;也是广泛使用的单元测试框架之一 二.Junit项目的创建 &#xff08;1&#xff09;先创…...

c++—内存管理、智能指针、内存池

1. 内存分析诊断工具&#xff1a;valgrind&#xff1b; 2. 内存管理的两种方式&#xff1a; ①用户管理&#xff1a;自己申请的&#xff0c;自己用&#xff0c;自己回收&#xff1b;效率高&#xff0c;但容易导致内存泄漏&#xff1b; ②系统管理&#xff1a;系统自动回收垃圾…...

JAVA使用HTTP代码示例

以下是使用Java发送HTTP请求的示例代码&#xff1a; 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 { …...

【网络协议详解】——电子邮件系统协议(学习笔记)

目录 &#x1f552; 1. 电子邮件系统概述&#x1f552; 2. 简单邮件传送协议SMTP&#x1f552; 3. SMTP协议的命令和响应&#x1f558; 3.1 命令&#x1f564; 3.1.1 HELO&#x1f564; 3.1.2 MAIL FROM&#x1f564; 3.1.3 RCPT TO&#x1f564; 3.1.4 DATA&#x1f564; 3.1.…...

年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本

2023年5月25日&#xff0c;MeterSphere一站式开源持续测试平台正式发布v2.10 LTS版本。这是继2022年5月发布v1.20 LTS版本后&#xff0c;MeterSphere开源项目发布的第三个LTS&#xff08;Long Term Support&#xff09;版本。MeterSphere开源项目组将对MeterSphere v2.10 LTS版…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...