鱼C论坛

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

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

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

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

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

x
  1. # import uuid
  2. import datetime
  3. from PIL import Image, ImageDraw,ImageFont,ImageTk
  4. import qrcode
  5. import tkinter as tk
  6. import tkinter.ttk as ttk

  7. class Application(tk.Tk):
  8.     def __init__(self):
  9.         super().__init__()
  10.         self.title("工卡制作")
  11.         self.geometry("300x300")
  12.         self.init_widgets()

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

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

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

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

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

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

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

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

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

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

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

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

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

  47.         self.frame = tk.Frame(self)

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

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

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

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

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

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


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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