tkinter - Wie schriftart für Text?

Ich bin auf der Suche nach die beste schriftart für die Anzeige von utf-8-Zeichen in einer tk.Text.

Lass ich python-print die ganze Familie Namen bekannt zu tk, mit diesem code:

print(font.families(root=self.parent))

und all die bekannten Namen für die Verwendungen mit diesem code:

print(font.names(root=self.parent))

Jedoch den Ausgang out der Familien ist eine Liste von Schriftarten, deren Namen aus einem oder mehreren Worten. Es ist leicht, diejenigen mit einem Wort wie dieses:

text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')

Aber wenn ich versuche, das gleiche mit den Schriftnamen, die aus mehreren Wörtern besteht, bekomme ich eine Fehlermeldung:

_tkinter.TclError: expected integer but got <second word of the family name>

Ich kann nicht es Stil, da es ein tk ist und nicht ein ttk-widget, so dass ich leider nicht:

style.configure('My.TText', fontsize=12, font='<family name with multiple words>')

Ich habe auch versucht, einfach die Leerzeichen aus den Namen der Familie wie diese:

text.configure(font='fangsongti')

Aber, dass die Ursachen tkinter verwenden einige fallback-font. Ich habe es der Eingabe einen Namen wie:

text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))

Und diese Ergebnisse beim drucken der genauen Zeichenfolge ich trat wie eine Familie name. Also akzeptiere es einfach alles, außer mehrere ausgedachte Namen.

Fand ich einige fonts, die Aussehen, OK, aber nur in bestimmten Größen und ich bin nicht sicher, ob Sie auf den meisten Systemen verfügbar:

# helvetica 12
# gothic 13
# mincho 13

Wie kann ich Schriftarten, die mit Namen, bestehend aus mehreren Wörtern? Wenn ich es nicht kann, welche Schrift, mit einer eine ausgedachte Namen, die geeignet ist für die Anzeige von utf-8-Zeichen wie zum Beispiel Chinesisch (aber nicht ausschließlich!) Zeichen, die auf gemeinsamen Schriftgrößen und ist auf den meisten Systemen verfügbar?

  • Die font parameter, wenn ich mich nicht Irre, muss ein Font-Objekt! Also, einfach erstellen Sie Ihre font-Objekt mit der Font Klasse, und weisen Sie dann den Verweis auf das font Bereich des widgets.
  • es kann auch ein Tupel.
  • Ja, ich war nicht sicher, dass die option 😉
  • Die font-parameter kann ein font-Objekt, den Namen der genannten Schrift wird ein font descriptor-string oder ein Tupel. Die tkFont.Schriftart(font=...) ist ein großer Mechanismus, der für die "Normalisierung" Schrift-Darstellungen, wie Deskriptoren, Tupel, font-Objekte, font, Namen, etc.
Schreibe einen Kommentar