python - Tkinter - 如何将文本更改为图像?
问题描述
让我们把它作为一个示例程序:
from tkinter import *
import random
win = Tk()
win.geometry('200x200')
alphabets = ["A", "B", "C"]
rand_alpha = random.choice(alphabets)
lbl = Label(win, font = 'Ariel 30',text = rand_alpha)
lbl.pack()
win.mainloop()
在上面的这个程序中,我想将“rand_alpha”的文本更改为图像文件,以便我可以使用 PIL 对其进行修改。python可以吗!?
解决方案
您可以使用ImageDraw
创建所需的图像:
from tkinter import *
import random
from PIL import Image, ImageTk, ImageDraw, ImageFont
win = Tk()
win.geometry('200x200')
alphabets = ["A", "B", "C"]
rand_alpha = random.choice(alphabets)
image = Image.new('RGB', (200, 200), (255, 255, 255)) # adjust the size to what you want
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('arial.ttf', size=128) # adjust the font and size to what you want
w, h = draw.textsize(rand_alpha, font=font)
draw.text(((200-w)//2, (200-h)//2), font=font, text=rand_alpha, fill='black')
tkimage = ImageTk.PhotoImage(image)
lbl = Label(win, image=tkimage)
lbl.pack()
win.mainloop()
使用方法请参考ImageDraw文档。
推荐阅读
- r - R中的代数:向量化与foreach与sapply
- javascript - 如何简洁地将日期带到所需的形式
- azure - 布尔应用程序属性上的 Azure IoT 中心消息路由
- numpy - 用于数学点积以产生标量的 numpy 函数
- asp.net-core - Azure CosmosDb 存储过程从字符串数组中选择查询
- java - 音频剪辑:javax.sound.sampled.LineUnavailableException
- python - 无关键字参数
- xamarin - 错误 XAGJS7009:System.InvalidOperationException:只能有一种类型具有 [Application] 属性 android Xamarin
- json - 匹配大括号之间的字符串,如果包含模式
- python - 悬停下拉按钮时更改字体和背景颜色