前期制作了《连连看8*4-不重复16个)《连连看12*4-不重复24个)
《连连看8*4-不重复16个)《连连看12*4-不重复24个)采用的是无word模板,按“四列”依次插入图案的方法——第1列8个图案纵向排列完成后,再进入第2列插入8个图案,依次类推。这种方法存在3个问题
1、纵向连线:中文阅读的顺序是从左到右,并非从上到下,可能会导致幼儿视觉混乱
2、图案较多:8个、12个图案配对,连线密集,容易交叉,不容易辨认线条。
3、缺少分割:8*4列图案,中间没有没有分割线,光看图案,并不知道是第1列与第2列的连线,第3列与第4列连线
设置每个格子的高度和宽度。都是4.6*3.45
把边框设为3磅黑色,中间一些细线全部取消(隐藏掉),让连线的空间的大一点。
图案的位置:第1、3行的图案置于表格顶端。
图案的位置:选中第2、4行的所有表格,在布局里把图案置于表格底端。
生成的效果
- '''
- 作者:阿夏
- 时间:2022年11月7日连连看(A4横板)8*4,两套题)
- (A4横排8*4张表格框横纵向中间横剪切))
- '''
-
- import os
-
- num=int(input('生成多少份\n'))
- Number=int(input('每页制作多少个(16个)\n'))
- size=int(input('图案大小(8*4 建议70)\n'))
- length=int(input('表格长度(8格)\n'))
- weight=int(input('表格宽度(4格)\n'))
-
- print('----------第1步:提取所有图案------------')
- list=['✿','☸','✪','☁','➹','✈','☂','☃','◐','☼','☯','◎','❤','♨','☋','♘','★','♫','❀','〼','✉','☏','♕','♖']
-
- print(len(list))# 一共24个图案
-
- print('----------第2步:新建一个临时文件夹------------')
- # 新建一个”装N份word和PDF“的文件夹
- os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\零时Word')
-
-
- print('----------第3步:随机抽取8个不重复的图案 ------------')
- 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
-
- for z in range(0,num): #多少份
- # word = gencache.EnsureDispatch('Word.Application')
- doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\练练看框架模板.docx')
- table = doc.tables[0]
-
- # 先随机抽取8个一列
- all=[]
- n1=[]
- n2=[]
- n3=[]
- n4=[]
- n = random.sample(list, Number) # 24个里面随机抽取16个放入一个组nn
- # print(n)
-
- # 第1行:
- for n1 in n[0:int(Number/2)]: # 16个里面的1-8个,提取单独数
- n3.append(n1)
- all.append(n1) # 第1轮8个添入总列表 (插入Word第1行)
-
- # 第2行:
- o1 = random.sample(n3, int(Number/2)) # 第1轮8个再随机打乱一次,不重复抽取
- for b in o1:
- all.append(b)#第1轮8个乱序排列不重复(插入Word第2行)
- # print(all)
-
- # 第3行:
- for n2 in n[int(Number/2):Number]: #16个里面的9-16个,提取单独数
- n4.append(n2)
- all.append(n2) # 做第4列的乱序用
-
- # 第4行:
- o2 = random.sample(n4, int(Number/2)) # 第2轮8个再随机打乱一次,不重复抽取
- for b in o2:
- all.append(b)#第2轮8个乱序排列不重复(插入Word第4列)
- print(all)
- # ['☃', '〼', '❤', '♕', '♫', '✈', '✿', '☸', '♫', '❤', '〼', '✈', '☃', '✿', '♕', '☸', '✪', '☁', '✉', '◎', '♖', '☼', '★', '☋', '♖', '☁', '☼', '☋', '✉', '◎', '✪', '★']
-
- # 确定8*4表格的表格单元格坐标(如第1行第1格是0,0 ,第2行第3格是(1,2)
- bg=[]
- for x in range(0,weight):
- for y in range(0,length):
- ww='{}{}'.format(x,y)
- bg.append(ww)
- # print(bg)
- # ['00', '01', '02', '03', '04', '05', '06', '07', '10', '11', '12', '13', '14', '15', '16', '17', '20', '21', '22', '23', '24', '25', '26', '27', '30', '31', '32', '33', '34', '35', '36', '37']
-
- # 提取表格单元格坐标和图形的坐标
- for t in range(0,len(all)): # all图案的长度为8*4=32个 遍历0-32(32个)
- pp=int(bg[t][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
- qq=int(bg[t][1]) # 提取表格bg里面每个元素的第1个数字==单元格Y坐标 t=索引数字
- k=all[t] # 提取all图案列表里面每个图形 t=索引数字
-
- run=table.cell(pp,qq).paragraphs[0].add_run(k) # 在单元格0,0(第1行第1列)输入第0个图图案
- run.font.name = '黑体'#输入时默认华文琥珀字体
- run.font.size = Pt(size) #输入字体大小默认30号
- run.font.color.rgb = RGBColor(200,200,200) #设置颜色浅灰
- 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'%(z+1)))#保存为XX学号的电话号码word
-
- from docx2pdf import convert
- # docx 文件另存为PDF文件
- inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
- outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.pdf".format('%02d'%(z+1)) # 要生成的文件:不存在
- # 先创建 不存在的 文件
- 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/桌面/连连看/(打印合集)横版合并代码 连连看{}乘4({}份).pdf".format(int(Number/2),num))
- file_merger.close()
- # doc.Close()
-
- # # print('----------第5步:删除临时文件夹------------')
- import shutil
- shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word') #递归删除文件夹,即:删除非空文件夹
-
终端运行
图案列表的生成
Word表格单元格坐标(XY)的索引数的生成
如何将单个图案输入到指定的Word表格单元格内
掌握了Word表格单元格的数字、图案、文字输入的方法,可以对“练练看Word模板”进行千变万化板式设计。
表格边框线条的隐藏(空白),增加操作的空间(没有线条干扰视线、多一点画线的空间),
表格线条加粗(框线分割),减少理解上的迷惑(谁和谁连接?怎么玩),通过加粗线让题目分开、自动组合,快速理解。
1、连线:可以凸显幼儿自己绘画线条的颜色,容易辨认操作的结果。
2、描画:孩子们用铅笔、记号笔描画(部分孩子喜欢描图)
3、环保:灰色能够节省打印油墨。
教学活动照片展示: