我正在使用 tkinter 画布制作一些漂亮的图片,并在圆圈顶部覆盖文本,如下图所示:
我希望字体大小取决于圆圈大小所依赖的相同数字。
tempfont = tkFont.Font(family='Helvetica',size=int(round(ms*topnode[1])))
self.display.create_text(center[0],center[1],fill = "#FFFFFF",text = int(round(ms*topnode[1])),font = tempfont)
我的问题是,当我使用上面的代码时,覆盖的文本对于每个文本对象都是一个恒定的大小。文本本身是正确的,因为它显示了我希望字体大小的数字,只是字体大小不正确。我已经尝试在大小定义中放入常量整数(按预期工作),并在上述两行代码之后立即添加一个 del(tempfont),但我还没有找到解决这个问题的方法。
我究竟做错了什么?
这是一个重现问题的独立小程序:
from Tkinter import *
import tkFont
class TestApp(Frame):
def __init__(self, master=None, height = 160, width = 400):
Frame.__init__(self, master)
self.grid()
self.createWidgets()
def createWidgets(self):
self.display = Canvas(self, width = 800, height = 320, bg = "#FFFFFF")
self.display.grid(row=0,column=0)
def recurtext(tsize):
if tsize > 20:
recurtext(tsize-10)
tempfont = tkFont.Font(family='Helvetica',size=tsize)
self.display.create_text(800 - (tsize*12),160, text = str(tsize), font = tempfont)
recurtext(60)
app = TestApp()
app.master.title("Test")
app.mainloop()
要点是recurtext
递归地调整字体大小,并以该大小写shows
出字体大小......或者我认为它应该。也许这是 tkinter 的一个错误,但我仍然抱有一些希望,即我是这里逻辑错误的人。