我正在使用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)
我的问题是,当我使用上面的代码时,覆盖的文本对于每个文本对象都是恒定大小的。文本本身是正确的,即它显示了我想要的字体大小的数字,只是没有以正确的字体大小显示。我尝试在大小定义中放入常量整数(按预期工作),并在上述2行代码后立即添加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的一个错误,但我仍然抱有一些希望,认为这里是我的逻辑错误。