次の図のように、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 のバグかもしれませんが、ここでロジックを間違えたのは私であるという希望をまだ持ち続けています。