展示效果:
单人使用样式:
单页打印样式
背景需求:
中班幼儿需要掌握ABAB规律排序,如下图所示,AB两个元素能外形不同、颜色不同。
利用Python Word单元格填色功能,随机生成AB样式,引导幼儿进行ABAB固定颜色涂色。
Word模板设置
1、插入表格1*8、
2、左侧的空心黏贴表和右侧的灰色黏贴边都是”插入-形状-矩形“
3、表格的框线:粗的6磅,细的1.5磅
代码设计:
# https://www.codenong.com/cs106022019/'''作者:阿夏时间:2022年11月27日ABAB规律填色 竖版2份4条)'''from docx import Documentfrom docx.oxml.ns import nsdeclsfrom docx.oxml import parse_xmlimport random,os# 新建表行数rowsNum = int(input('行数(1行)\n'))# 新建表列数colsNum = int(input('列数(只要2个=AB)\n'))Num = int(input('每套题目随机抽取几个不重复颜色(共有9个颜,4行需要8个不重复颜色)\n'))rowrow= int(input('几条?(4)\n'))num= int(input('生成多少份?\n'))# 表格首行背景色设置# 背景色,根据需要调整,可参考站长之家选色 http://tool.chinaz.com/Tools/PageColor.aspx# (米罗12色蜡笔(去掉白色'FFFFFF'和黑色'000000',黑色涂色很容易显脏)# # 白色\#黑色\# 灰色\# 红色\# 橘黄\# 黄色\# 森林绿\# 黄绿色\# 蓝色\# 青色(天蓝)\# 靛青色(紫色)\# 粉红colorall=['FFFFFF','000000','CCCCCC','FF0000','FF8000','FFFF00','228B22','7FFF00','0000FF','00FFFF','4B0082','FFC0CB']# colorall=['FFFFFF','000000','CCCCCC','FF0000','FF9912','FFFF00','228B22','7FFF00','0000FF','00FFFF','4B0082','FFC0CB']考虑6个对比色colorsmall=colorall[3:]# 排除白色、黑色、灰色print(colorsmall)print('----------第2步:新建一个临时文件夹------------')# 新建一个”装N份word和PDF“的文件夹os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\规律填色\零时Word')for nn in range(1,num+1): # for e in range(0,2): # 一页两份 doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\规律填色\规律填色模板(竖版8列ABAB).docx') # 方案一:一页中,第一套8个颜色和第2套8个颜色中间,只有1-2个不一样(大部分是2个不一样,少量1个不一样) color=[] colors1=random.sample(colorsmall,Num) colors2=random.sample(colorsmall,Num) for h in colors1: color.append(h) for g in colors2: color.append(g) print(color) # 随机抽取8个色块 ['00FFFF', 'CCCCCC', '228B22', 'FFC0CB', 'FF9912', 'FFFF00', '0000FF', '4B0082', 'FF0000', 'FFFF00', '00FFFF', '0000FF', '7FFF00', '4B0082', 'CCCCCC', '228B22'] # # 方案二:一页中,第一套8个颜色和第2套8个颜色是一样的。 # color=[] # for e in range(0,2): # colors=random.sample(colorsmall,Num) # for k in colors: # color.append(k) # print(color) # # ['FF0000', 'FFFF00', '00FFFF', '7FFF00', 'FF9912', 'FFC0CB', 'CCCCCC', '0000FF', '7FFF00', 'FFC0CB', 'CCCCCC', '228B22', 'FFFF00', 'FF0000', '00FFFF', '4B0082'] # 表格位置 bg=[] for b in range(0,rowrow*2): # 四个表 for x in range(0,rowsNum): # 1行*8列 for y in range(0,colsNum): # 只要填充2个格子ABAB ww='{}{}'.format(x,y) bg.append(ww) print(bg) ['00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01'] for b in range(0,rowrow*2): # 0-8行 if b==3: # 排除第3、7行(4行、8行) pass elif b==7: # 这两行给孩子自己随意画 pass # else: table = doc.tables[b] # 4567(8)行 for t in range(b*colsNum,b*colsNum+colsNum): # 02 pp=int(bg[t][0]) qq=int(bg[t][1]) k=color[t] print(k) # shading_list = locals() shading_list['shading_elm_'+str(qq)] = parse_xml(r'<w:shd {} w:fill="{bgColor}"/>'.format(nsdecls('w'),bgColor = k)) table.rows[pp].cells[qq]._tc.get_or_add_tcPr().append(shading_list['shading_elm_'+str(qq)]) 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 osfrom PyPDF2 import PdfFileMergertarget_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/桌面/规律填色/(打印合集)规律填色A4竖版2份ABAB({}份).pdf".format(num))file_merger.close()# doc.Close()# print('----------第5步:删除临时文件夹------------') import shutilshutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/规律填色/零时Word') #递归删除文件夹,即:删除非空文件夹
重点说明:
输入数据
运行过程
随后删除过渡信息
单元格背景色的确定——米罗可儿12色蜡笔的12种颜色(使用RGB颜色)
随机抽取2次,每次8个颜色,合起来一共16个颜色。前8个在0-4表格内,后8个在4-8表格内
坐标XY
重点:如何单元格填充背景色
效果展示:
4张A4纸=8份作业
预设玩法:
1、ABAB添色——单元格框线的粗细提示幼儿两个颜色是一组的。
2、有黏贴边——纸条剪下来,黏贴成手镯、长条纸等
3、自由涂色——女孩更喜欢涂各种颜色(彩虹系列)