Hallo wuf,
ein interessanter Ansatz, um vertikalen Text für Tkinter verfügbar zu machen und vermutlich so ziemlich der einzige gangbare Weg, wenn man nicht auf zusätzliche Module zurückgreifen will. Der letzte Punkt ist sicherlich die Stärke dieses Ansatzes.
Die Schwachpunkte liegen natürlich auch auf der Hand: Wenig Flexibilität bei der Schriftart und der Schriftgröße. Letztes ließe sich wohl durch den Einsatz entsprechender Mathematik theoretisch beheben - wie gut das dann praktisch noch aussieht, ist eine andere Frage.
Ich habe mal einen anderen Weg eingeschlagen, dessen Vorteile die Nachteile deines Ansatzes sind und umgekehrt ebenso: Man braucht die PIL und muss sich außerdem - sofern man es nicht nur auf dem eigenen Rechner einsetzen will - Gedanken machen, wie man mit dem Problem "Schriftartdateien" umgeht.
Zum Einstieg und zum Weiterarbeiten habe ich mal eine
Klasse XButton entworfen. Der folgende Code liefert dann die abgebildete GUI:
Code: Alles auswählen
root = tk.Tk()
center = tk.Frame(root)
XButton(root,text="Mich auch",fontfile="verdana.ttf",fontsize=16,
orient="up").pack(side="left")
center.pack(side="left")
XButton(center,text="Klick mich",fontfile="linear.ttf",fontsize=18,
orient="normal",fg="blue",bg="snow").pack()
XButton(center,text="Klick dich",fontfile="arial.ttf",
orient="headlong",fg="darkgreen",bg="ivory").pack()
XButton(root,text="Dich auch",fontfile="trebuc.ttf",fontsize=18,
orient="down",fg="white",bg="#990000").pack(side="left")
root.mainloop()
Das für XButton verwendete Konzept lässt sich leicht auf Labels oder Canvas-Text übertragen. Das überlasse ich dann dir ...
