奖状自定义生成(可生成多张)

本文介绍如何使用Python结合tkinter、re和PIL库来批量生成不同名称的奖状。通过创建输入框收集获奖人姓名,判断并添加到奖状生成列表,动态更新显示已添加的姓名。在奖状设计中,设置好文字坐标后,即可保存个性化奖状。通过简单的按钮操作,实现奖状的批量定制。
部署运行你感兴趣的模型镜像

今天为大部分学校解决麻烦:奖状生成,那么如何生成多张不同奖状呢

还是一样,我们用tkinter但是,要加上re和 PIL中的Image, ImageDraw, ImageFont

先导入库

#导入库中大部分功能

import re
from tkinter import *
from PIL import Image, ImageDraw, ImageFont
# 导入随机库
import random

将输入窗口生成

# 实例窗口
root = Tk()
root.title('奖状生成器')
root.geometry('600x400+50+50')
root.resizable(0, 0)

接下来,我们要生成三个列表:

names:获奖人姓名库

have_name:本次输入中已添加的姓名

take_name:本次输入中成功添加的姓名

names = []
have_name=[]
take_name=[]

接下来创建输入框:

#姓名输入
L1 = Label(root, text='请输入获奖人姓名:', font=('黑体', 20))
L1.place(x=10, y=40)
entry = Entry(root, font=('黑体', 20), fg='pink')
entry.place(x=260, y=40)

我们要在这里创建一个全局变量p

作为获奖人数统计

p=0

然后是:人数,添加,已添加的显示

text = StringVar()
text1 = StringVar()
text2 = StringVar()
text.set('请以中文逗号隔开')
L2 = Label(root, textvariable=text, font=('黑体', 20))
L2.place(x=300, y=200, anchor=CENTER)
L3 = Label(root, textvariable=text1, font=('黑体', 20))
L3.place(x=300, y=250, anchor=CENTER)
L4 = Label(root, textvariable=text2, font=('黑体', 20))
L4.place(x=300, y=150, anchor=CENTER)
text2.set(f'获奖人数:{p}')

下来就是最难的一部分:

姓名判定

#姓名判定
def name():
    global p
    text.set('            ')
    text1.set('             ')

先把p全局变量

然后将已添加,添加的部分清空防止串

    a = entry.get()
    b = re.split(',',a)

将输入框的名字以中文逗号为分割点一个一个加入列表

遍历输入的名字: 

    for q in b:
        if q in names:
            
            have_name.append(q)
            o = (','.join(have_name))
            text.set(f'{o}已经加入名单..')

如果输入的名字在获奖人名单中:
会加入到已添加列表中并以中文逗号分隔显示:

 

        elif a != '':
            names.append(q)
            take_name.append(q)
            n = (','.join(take_name))
            p=p+1
            text1.set(f'{n}添加成功')
            text2.set(f'获奖人数:{p}人')

保证输入框不是空的而且未添加,就把它添加到获奖人名单和成功添加列表中

并显示出来:

        else:
            text.set('你还没输入获奖者姓名!!!')

最后只剩下空白了,如果没有输入:就会显示

 

 最后将已添加的姓名和成功添加的姓名列表清空,防止出现明明没输入却添加成功显示出来了

    have_name.clear()
    take_name.clear()

下来就是对奖状的更改了:

比如这张

 

 名字设置为:学习证书(.png)

括号内为后缀名


然后生成奖状并保存:

def make_1():
    for i in names:
        img = Image.open('学习证书.png')
        draw = ImageDraw.Draw(img)
        font = ImageFont.truetype('FZCQJW.TTF', 35)
        draw.text((200, 230), i, fill='black', font=font)
        img.save(f'{i}'+'.png')
        text.set('生成完毕,请自行打开。')

对了

 这个部分为名字坐标,不同奖状自行调整


下来进行按钮的设置(最简单的别告诉我你不会):

B1 = Button(root, text='加入名单', font=('黑体', 20),command=name)
B1.place(x=150, y=320)
B2 = Button(root, text='生成奖状', font=('黑体', 20),command=make_1)
B2.place(x=300, y=320)
root.mainloop()

然后就完成了。。。

就这么简单

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值