• 【教学类-20-01】20221203《世界杯16强国旗》(大班)


    展示效果:

    单人使用样式:

       多页打印样式

     背景需求:

    做《蒙德里安》格子画时,我把A4纸分割为正方形画框和长条纸支撑。活动中幼儿询问:为什么我的画站不起来?(底边剪的不平整、提手太重、画框有边缘白条太重)

    这让我发现,Python批量的纸类A4学具除了运用与数学和美术,还可以基于纸张本身的材料,进行一些探究活动——平衡性等。

    在世界杯期间,我想把A4纸条利用起来,就想到了最简单的手工制作方法——搓棒子制作手持式国旗。

     Word模板设置 

     插入1行3列表格

     第1个单元格的高宽

     第2个单元格的高宽

     第3个单元格的高宽

     边框设置:内外边框都是黑体3磅,

    文字

     

     

     

    国旗的设计:

    网上百度百科里下载16强国家的国旗图片,PNG图片+标注国旗长宽比

    由于每个国旗的长宽比不同,因此不能把国旗统一成一样的长款。

    所以需要在ppt 里把图片调整适应Word单元格大小(宽度最多14.1CM)

    16强国旗主要有几种款式:(1:3、1:2、7:10、10:18、5:8、1:1、3:5、2:3最多)

     

     

     如果单纯用纸条制作旗杆,时间过快,所以用PPT把16强国旗上主要色块做色卡,让幼儿进行简单的涂色。

    (国徽标志、星星由于太过细小,蜡笔根本涂不到这些细节,所以都保留彩色图案,只需要幼儿涂大色块)

     为了便于抽取国家名称,所有的图片名字格式“国家-1国旗X比X.png"

    里面的“-”很重要,是抽取文字的一个节点,必须在国家名称后面加一个“-”,否则无法提取国旗对应的名字。

     

    代码设计:

    1. '''
    2. 作者:阿夏
    3. 时间:2022年12月03日世界杯16强国旗)
    4. '''
    5. import os,random
    6. num=int(input('生成多少份\n'))
    7. # Number=int(input('抽取几个16强国旗图片(1个)\n'))
    8. print('----------第1步:提取所有的16强国旗图片的路径------------')
    9. path = r'C:\Users\jg2yXRZ\OneDrive\桌面\16强国旗\16强国旗图片' #文件夹目录
    10. files= os.listdir(path) #得到文件夹下的所有文件名称 ['塞内加尔国旗2比3.png','澳大利亚国旗2比1.png']
    11. print(files)
    12. lists=[] # 所有图片路径的集合
    13. for f in files:
    14. a='{}\{}'.format(path,f) # 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\塞内加尔国旗2比3.png'
    15. lists.append(a)
    16. print(lists)
    17. # ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\塞内加尔国旗2比3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\巴西国旗7比10.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\法国国旗2比3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\波兰国旗5比8.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强
    18. # 国旗图片\\澳大利亚国旗2比1.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\美国国旗10比19.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\英格兰国旗3比
    19. # 5.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\荷兰国旗2比3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\葡萄牙国旗2比3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\16强国旗\\16强国旗图片\\阿根廷国旗3比5.png']
    20. print('----------第2步:新建一个临时文件夹------------')
    21. # 新建一个”装N份word和PDF“的文件夹
    22. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\16强国旗\零时Word')
    23. print('----------第3步:随机抽取16个国旗1个 ------------')
    24. from win32com.client import constants,gencache
    25. from win32com.client.gencache import EnsureDispatch
    26. from win32com.client import constants # 导入枚举常数模块
    27. import os,time
    28. import docx
    29. from docx import Document
    30. from docx.shared import Inches,Cm,Pt
    31. from docx.shared import RGBColor
    32. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    33. from docx.oxml.ns import qn
    34. from docxtpl import DocxTemplate
    35. import pandas as pd
    36. from docx2pdf import convert
    37. from docx.shared import RGBColor
    38. for nn in range(1,num+1):
    39. # word = gencache.EnsureDispatch('Word.Application')
    40. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\16强国旗\16强国旗(模板).docx')# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)
    41. table = doc.tables[0] # 一共有1个表格
    42. k = random.choice(lists) # 随机抽取8个不重复空心图案 # C:\Users\jg2yXRZ\OneDrive\桌面\16强国旗\16强国旗图片\澳大利亚国旗2比1.png
    43. b=k.split("\\")[-1] #抽取最后一段 澳大利亚国旗2比1.png
    44. c=b.split("-")[0] # 抽取-前面的文字 澳大利亚
    45. run=doc.tables[0].cell(0,2).paragraphs[0].add_run() # 在第1个表格中第2个单元格内插入国旗
    46. # run.add_picture('{}'.format(k),width=Cm(13.5),height=Cm(9))
    47. run.add_picture('{}'.format(k))
    48. # 插入16强国旗图片,k=16强国旗图片所在路径。单元格大小有限,每张16强国旗图片原始尺寸8.744CM,插入的大小最多4CM
    49. table.cell(0,2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    50. run=table.cell(0,0).paragraphs[0].add_run(c) # 在单元格0,0(第1行第1列)输入国家名称
    51. run.font.name = '黑体'#输入时默认华文彩云字体
    52. run.font.size = Pt(80) #输入字体大小默认30号
    53. run.font.color.rgb = RGBColor(200,200,200) #设置灰色
    54. # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
    55. r = run._element
    56. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    57. table.cell(0,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    58. # doc.Save()# 把有空格的1.docx保存
    59. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\16强国旗\零时Word\{}.docx'.format('%02d'%nn))
    60. from docx2pdf import convert
    61. # docx 文件另存为PDF文件
    62. inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/16强国旗/零时Word/{}.docx".format('%02d'%nn) # 要转换的文件:已存在
    63. outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/16强国旗/零时Word/{}.pdf".format('%02d'%nn) # 要生成的文件:不存在
    64. # 先创建 不存在的 文件
    65. f1 = open(outputFile, 'w')
    66. f1.close()
    67. # 再转换往PDF中写入内容
    68. convert(inputFile, outputFile)
    69. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    70. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    71. import os
    72. from PyPDF2 import PdfFileMerger
    73. target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/16强国旗/零时Word'
    74. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    75. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    76. pdf_lst.sort()
    77. file_merger = PdfFileMerger()
    78. for pdf in pdf_lst:
    79. print(pdf)
    80. file_merger.append(pdf)
    81. file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/16强国旗/(打印合集)16强国旗A4整张({}份).pdf".format(num))
    82. file_merger.close()
    83. # doc.Close()
    84. # print('----------第5步:删除临时文件夹------------')
    85. import shutil
    86. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/16强国旗/零时Word') #递归删除文件夹,即:删除非空文件夹

    重点说明:

    输入数据

    只要填写份数,其他都是默认的

     运行过程

    国旗图片的路径

     合成PDF

      随后删除过渡信息

      一、提取所有图片的路径

     二、抽图片,及图片上的文字,填入相应的格子里

     效果展示:

    1张1人 

       预设玩法:

    1、探究:做一根国旗杆(折纸、卷纸)

    2、美术:根据电视上图片的图案涂色。

    3、前书写:名字、学号

    4、其他:幼儿的玩法行为、语言表达、互动交流。

  • 相关阅读:
    Redis高可用、持久化及性能管理
    关键词推广-关键词推广软件
    Go语言快速入门篇(一):转义字符、注释说明、代码规范
    stm32F407-------LCD
    iOS ------ Block的总结
    Splunk UBA 备份和恢复
    优彩云采集器下载-免费优彩云采集器下载地址
    C++11范围for
    如何从数组对象中拿到指定的数据格式,数组对象数据处理
    【机器学习】python机器学习使用scikit-learn对模型进行微调:按特征贡献大小保留最重要k个特征的transform
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/128163654