当前位置: 首页 > 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

运行四次,输入不同的值,调用不同的模板,得到撑满格的“带笔画步骤图”的描字帖。

 

http://www.lryc.cn/news/89219.html

相关文章:

  • 关于PyQt5的环境搭建
  • rsync+inotfy实时同步
  • Python代码写好了怎么运行
  • 2023 年的 Web Worker 项目实践
  • C++的最后一道坎 | 百万年薪的程序员
  • Unity的OnOpenAsset:深入解析与实用案例
  • 【Netty】Netty 程序引导类(九)
  • 如何使用进行MQ中间件接口测试
  • Zebec生态进展迅速,频被BitFlow、Matryx DAO等蹭热度碰瓷
  • 7种PCB走线方式
  • Rabbit SpringBoot高级用法
  • 找不到vcruntime140.dll,无法继续执行代码?多种解决方法解析
  • 自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务
  • pdf怎么合并在一起?软件操作更高效
  • Junit常见用法
  • c++—内存管理、智能指针、内存池
  • JAVA使用HTTP代码示例
  • 【网络协议详解】——电子邮件系统协议(学习笔记)
  • 年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本
  • 从 OceanBase 迁移数据到 DolphinDB
  • 淘宝商品列表数据接口(支持价格、销量排序)
  • Android 11 版本变更总览
  • 传染病学模型 | Matlab实现基于SIS传染病模型模拟城市内人口的互相感染及城市人口流动所造成的传染
  • 物联网技术如何改变我们的生活:一位资深物联网专家的见解
  • node.js+vue.js大学生在线选课系统的设计与实现93pul
  • 华为OD机试真题 Java 实现【寻找符合要求的最长子串】【2023Q1 200分】
  • 接口测试工具Postman接口测试图文教程
  • 视频编辑软件:迅捷视频工具箱
  • 网络知识点之-HTTP协议
  • K类函数和KL类函数