网站首页 > 技术教程 正文
今天,想弄一个签名的界面,弄个简单的供参考学习使用,一个窗口界面里面弄个输入框,方便输入名字啥的,一个生成按钮,一个生成画布的区域,再设置一个保存生成的签名按钮。
从简单入手,复杂的一下也弄不完,也没那么多精力,以小见大,高山也是一块一块石头叠起来的。
界面大致如下
由于没有啥特殊的字体,也不想花太多时间去研究下载字体,就先这样了,你学会了自己去搞点漂亮的艺术字体就可以了。
生成后保存起来。
我们还是上代码吧,想学好就自己练习,自己修改。
import tkinter as tk
from tkinter import font, filedialog
from PIL import Image, ImageDraw, ImageFont, ImageTk
class SignatureGenerator:
def __init__(self, root):
self.root = root
self.root.title("一个简单的艺术签名生成器")
# 初始化参数
self.name = tk.StringVar() # 输入的名字
# self.font_name = "arial.ttf" # 默认字体(可替换为其他字体文件)
#self.font_name ="simhei.ttf"#黑体 艺术字体可以去下载到电脑上,然后使用
self.font_name ="msyhbd.ttc"#雅黑
self.font_size = 60
self.text_color = "blue" #设置字体颜色
self.bg_color = "white"#你想改什么颜色就改什么颜色
# 创建界面
self.create_widgets()
def create_widgets(self):
"""创建界面组件"""
# 输入框和按钮
input_frame = tk.Frame(self.root)
input_frame.pack(pady=20)
tk.Label(input_frame, text="输入姓名:").pack(side=tk.LEFT)
entry = tk.Entry(input_frame, textvariable=self.name, width=20)
entry.pack(side=tk.LEFT, padx=5)
generate_btn = tk.Button(
input_frame, text="生成签名",
command=self.generate_signature
)
generate_btn.pack(side=tk.LEFT, padx=5)
save_btn = tk.Button(
input_frame, text="保存图片",
command=self.save_image
)
save_btn.pack(side=tk.LEFT)
# 签名预览区域
self.preview_label = tk.Label(self.root)
self.preview_label.pack(pady=20)
def generate_signature(self):
"""生成艺术签名图片"""
name = self.name.get().strip()
if not name:
return
# 创建空白图片
image = Image.new("RGB", (800, 200), self.bg_color)
draw = ImageDraw.Draw(image)
try:
# 加载字体(使用系统字体或自定义字体文件)
font = ImageFont.truetype(self.font_name, self.font_size)
except IOError:
font = ImageFont.load_default()
# 计算文本位置(使用新版 textbbox 方法)
bbox = draw.textbbox((0, 0), name, font=font)
text_width = bbox[2] - bbox[0] # 右边界 - 左边界 = 宽度
text_height = bbox[3] - bbox[1] # 下边界 - 上边界 = 高度
x = (image.width - text_width) / 2
y = (image.height - text_height) / 2
# 绘制文字
draw.text((x, y), name, fill=self.text_color, font=font)
# 显示预览
self.current_image = image
photo = ImageTk.PhotoImage(image)
self.preview_label.config(image=photo)
self.preview_label.image = photo
def save_image(self):
"""保存图片到本地"""
if not hasattr(self, "current_image"):
return
file_path = filedialog.asksaveasfilename(
defaultextension=".png",
filetypes=[("PNG 图片", "*.png"), ("所有文件", "*.*")]
)
if file_path:
self.current_image.save(file_path)
if __name__ == "__main__":
root = tk.Tk()
app = SignatureGenerator(root)
root.mainloop()
附上代码截图,
以真诚交换真诚,奉献给努力刻苦勤奋的人。我一直在努力。
- 上一篇: 在哪里可以设计签名?个性签名设计方法分享
- 下一篇: 如何在word文档中制作电子版手写签名?
猜你喜欢
- 2025-05-21 签名怎么抠图出来?快来试试这4种一键抠图的方法,非常简单!
- 2025-05-21 自动签字笔,又被称作自动签名机,最早可追溯到19世纪的多字仪
- 2025-05-21 【继承】遗嘱:遗嘱能打印出来签字吗?“打印遗嘱”有什么要求?
- 2025-05-21 win10禁用驱动程序强制签名怎么操作 永久关闭系统强制签名教程
- 2025-05-21 如何在word文档中制作电子版手写签名?
- 2025-05-21 在哪里可以设计签名?个性签名设计方法分享
- 2025-05-21 PDF签名怎么添加?分享5个pdf电子签名简单操作,一看就会
- 2025-05-21 那些年的离谱网名和个性签名,想不起来以前到底在想什么
- 2025-05-21 电脑UEFI和Legacy有什么区别,千万别搞错,安装系统必了解的知识
- 2025-05-21 如何制作合规的电子合同?注册、认证、发起、签署,一文说清!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)