鱼C论坛

 找回密码
 立即注册
查看: 1073|回复: 0

[作品展示] tkinter制作一个工卡牌的小软件

[复制链接]
发表于 2021-9-24 20:40:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# import uuid
import datetime
from PIL import Image, ImageDraw,ImageFont,ImageTk
import qrcode
import tkinter as tk
import tkinter.ttk as ttk

class Application(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("工卡制作")
        self.geometry("300x300")
        self.init_widgets()

    def draw_pic(self):
        image = Image.new("RGB", (402, 603), (240, 240, 240))
        draw = ImageDraw.Draw(image)

        head_font = ImageFont.truetype('simsun.ttc', 25, encoding='unic')
        color = 'black'
        font = ImageFont.truetype('simsun.ttc', 20, encoding='unic')

        logo = Image.open('11.jpg')
        image.paste(logo, (0, 0))

        company = "XXXXXXXXXX有限公司"
        draw.text((25, 100), company, fill=color, font=head_font)

        photo = Image.open('33.jpg')
        image.paste(photo, (60, 150))

        # uid = uuid.uuid4().hex[:8].upper()
        uid = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
        # print(uid)
        name = self.txt_username.get()
        draw.text((60, 400), f"姓名:{name}", fill=color, font=font)

        gender = self.var.get()
        draw.text((60, 450), f"性别:{gender}", fill=color, font=font)

        dept = self.txt_dept.get()
        draw.text((60, 500), f"部门:{dept}", fill=color, font=font)

        title = self.txt_title.get()
        draw.text((60, 550), f"职位:{title}", fill=color, font=font)

        qr = qrcode.make(f"{uid}~{name}")
        qr = qr.resize((120, 120))
        image.paste(qr, (250, 400))

        draw.rectangle(((0, 0), (400, 600)), fill=None, outline='#337ab7', width=5)

        image.show()
        image.save(f"{uid}.png")

    def init_widgets(self):
        photo = ImageTk.PhotoImage(Image.open("bg.jpg"))
        self.lbl_img = tk.Label(self, image=photo, width=300, height=50)
        self.lbl_img.image = photo
        self.lbl_img.pack()

        self.frame = tk.Frame(self)

        self.lbl_username = tk.Label(self.frame, text="姓名:", anchor=tk.W)
        self.lbl_username.pack(fill=tk.X)
        self.txt_username = tk.Entry(self.frame)
        self.txt_username.pack(fill=tk.X)

        self.lbl_gender = tk.Label(self.frame, text="性别:", anchor=tk.W)
        self.lbl_gender.pack(fill=tk.X)
        self.var = tk.StringVar()
        self.txt_gender = ttk.Combobox(self.frame,textvariable=self.var,value=('男','女'))
        self.txt_gender.pack(fill=tk.X)

        self.lbl_dept = tk.Label(self.frame, text="部门:", anchor=tk.W)
        self.lbl_dept.pack(fill=tk.X)
        self.txt_dept = tk.Entry(self.frame)
        self.txt_dept.pack(fill=tk.X)

        self.lbl_title = tk.Label(self.frame, text="职位:", anchor=tk.W)
        self.lbl_title.pack(fill=tk.X)
        self.txt_title = tk.Entry(self.frame)
        self.txt_title.pack(fill=tk.X)

        self.btn_login = tk.Button(self.frame, text="制作", width=16,command=self.draw_pic)
        self.btn_login.pack(side=tk.LEFT, pady=10)

        self.btn_cancel = tk.Button(self.frame, text="取消", width=16, command=lambda: self.destroy())
        self.btn_cancel.pack(side=tk.RIGHT, pady=10)
        self.frame.pack(padx=20, pady=5, fill=tk.X)


if __name__ == "__main__":
    app = Application()
    app.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 07:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表