【描字帖】学号姓名班级描字帖

背景说明:

本学期我带机动班 ,其中大4班 去的频率比较高,与是我用大四班的名单做了一份

"描字帖",在9月1日第一天见面时,孩子们用记号笔描字帖时,我也可以对这些孩子初步混个眼熟(聪明的、胖的孩子与名字、哪些孩子线条有力,线条抖动)

学具样式:

(1)描字内容、学号、姓名、班级

(2)A4竖版,7行,3行有灰色字体**(黑体80磅,撑满了,不能再大了**),四行为空白,边框为灰色

(3)大4班都是三个名字,所以都是黑体80磅,不需要单独做四字名字

代码准备

EXCLE名单

WORD模板

代码展示py

python 复制代码
'''
作者:阿夏
时间:2023年8月28日
名称:大四班级姓名学号)
'''

import xlwt
import xlrd
import os
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块

import os,time
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

from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor


wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col2=sheet.col_values(1)# 名字
col3=sheet.col_values(2)# 班级
num=len(col1)-1  # 第一列去掉第一行

list=[]
# 生成 基本组:"学号"
for i in range(1,len(col1)):
    for d in range(3):
        a1='{}'.format ('%02d'%col1[i])    #学号
        list.append(a1)
        b1=col2[i]    #学号
        list.append(b1)
        c1=col3[i] 
        list.append(c1)
    for f in range(12):
        b=''
        list.append(b)
print(list)# 32个名字

bg=[]
for x in range(0,7):
    for y in range(0,3):
        c='{}{}'.format(x,y)
        bg.append(c)
print(bg)

listall=[]
for o in range(int(len(list)/21)):
    d=list[o*21:o*21+21]
    listall.append(d)
print(listall)


print('----------第1步:新建一个临时文件夹------------')
# 新建一个"装N份word和PDF"的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')
# doc= docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字贴\打印合集描字贴.docx")# 新建Word

for n in range(int(len(listall))):    # 一共多少份
    doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学号班级名字.docx")
  
    table = doc.tables[0]   

    for p in range(0,len(bg)):               # 一共有9个表格

        
        pp=int(bg[p][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
        qq=int(bg[p][1]) 
        # f=font[t]        # 字体格式
        k=listall[n][p]               # 从4名字里提取名字\
        print(pp,qq,k)

        run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个名字
        run.font.name = '黑体'  #输入时不同字体
        run.font.size = Pt(80)  #输入字体大小80或68号
        run.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰
    
        r = run._element
        r.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'%n))#保存为XX学号的零时word

    from docx2pdf import convert
    # docx 文件另存为PDF文件
    inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%n)# 要转换的文件:已存在
    outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%n)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile,'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)

    from docx2pdf import convert

print('----------第4步:把都有PDF合并为一个打印用PDF------------')

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/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-4名字-({}人).pdf".format(num))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)大4班学号名字班级({}份).pdf".format(len(col1)-1))
file_merger.close()
# doc.Close()

# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`

终端运行

直接运行,不用输入参数

结果展示

打印效果:

教学过程

时间:2023年9月1日 15:00-15:30

班级:大4班

人数:25人(实际32人)

活动导入:

1、纸片上有什么?

A:有相同的字(都是4)

B:上面有一样的字,下面没有。

C:大4,我们现在是大4了!

2、这里学号。

师:"这位小朋友学号是多少?

很多孩子说:30号师:这是03,可能你们看到的是30,(镜像视力)。

为了让这个3撑满格子,我在前面加了0,实际上03就是3**,**

C:0是空的,不算的。

师:对, 3号同学是谁呢?

F:是XXX

**师:**这是3号XXX的描字帖,每个人都有一份你学号和名字的字帖。

会写学号的孩子举手:24人

不会写学号的孩子举手:1人,

师:真的不会写?你的学号多少,我给你做一张专门的学号字帖。

C:我不知道我的学号

D:我是18号,他大概是17号的吧。

3、有几位同学会写名字?会写1个字也算会写

5位孩子举手,4位是女孩(这几个孩子写字画画的线条流畅)

随机生成:既然大部分小朋友都不会写名字,那么降低难度,只要小朋友写学号一列、大4一列、中间的名字,只要用记号笔描3行,就可以了。

E:老师,我不会写学号!

F:老师,我不会写名字

G:可以描字,就像画画一样!把灰色线画成黑色就可以。

E:我不会!

F:等会儿老师单独教你。(大班毕竟画过两年的绘画,肯定绘画描线的基础。单独指点一下如何描线)

4、发描字帖,发到3号,感觉速度太慢

师:我发的太慢了,谁认识小朋友的学号,帮我一起发。

陆续1男2女站起来要求发纸片。

男孩喊学号,由于镜像视力,30念成03,27念成21......

大约还有10份找不到主人(今天7位孩子没有来),发纸的孩子还在锲而不舍的叫学号。

最后放在桌子上,让没有拿到纸的孩子自己来拿。

通过描字,

了解孩子的前期书写水平,

鼓励孩子参与(把灰色描成黑色)

足够的选择空间(可以反面画,或者折叠放书包))

相关推荐
数据智能老司机14 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机15 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机15 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机15 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i15 小时前
drf初步梳理
python·django
每日AI新事件15 小时前
python的异步函数
python
这里有鱼汤16 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook1 天前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室1 天前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三1 天前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试