Hab mal ein Test gemacht...
Ich habe das PNG Bild des Fonts genommen und die einzelnen Buchstaben in ein Dict "konvertiert".
Dazu habe ich pyPNG (
https://pythonhosted.org/pypng/index.html ) genommen und das ganze generieren lassen:
Code: Alles auswählen
u'A': (# LATIN CAPITAL LETTER A
"....X...",
"...X.X..",
"..X...X.",
"..X...X.",
"..XXXXX.",
"..X...X.",
"..X...X.",
"........",
),
u'B': (# LATIN CAPITAL LETTER B
"..XXXX..",
"...X..X.",
"...X..X.",
"...XXX..",
"...X..X.",
"...X..X.",
"..XXXX..",
"........",
),
u'C': (# LATIN CAPITAL LETTER C
"...XXX..",
"..X...X.",
"..X.....",
"..X.....",
"..X.....",
"..X...X.",
"...XXX..",
"........",
),
Klar, ich TKinter kann auch GIF, PGM oder X11 Bitmaps verarbeiten, aber ich fand es mal ganz spannend, das auf diesen Weg zu machen
Aus den einzelnen Buchstaben Daten generiere ich ein
Tkinter.PhotoImage Instanz, die ich dann auf ein
Tkinter.Canvas per
canvas.create_image() einfüge...
Hab gleich mal ein Test mit gemacht, man kann einfach mit den Pfeil-hoch/-runter Tasten durch die Farbpallette gehen. Die fertig generieren
Tkinter.PhotoImage Instanzen, werden in ein cache gepackt.
Sourcen:
https://github.com/jedie/DragonPy/blob/ ... on_font.py
sieht dann so aus:
Ich hatte nach jedem
canvas.create_image() auch ein
self.root.update() gemacht. Das bremst allerdings total aus.
Ohne update() geht es auch und ist deutlich schneller. Aber ich weiß nicht, ob ich im "produktiv system" auf ein
self.root.update() verzichten kann.
Ich vermute mal, das bei der Test-Implementierung ein
self.root.update() aus dem mainloop herraus angestoßen wird, weil ein Neuzeichnen ja über das folgende angestoßen wird:
Code: Alles auswählen
self.root.bind('<Down>', self.event_arrow_down)
self.root.bind('<Up>', self.event_arrow_up)
Ich gehe mal davon aus, das nach jedem "Event" automatisch ein update() durchgeführt wird, oder?
Vielleicht mit .after() behelfen?