Sto cercando di trovare il miglior font per la visualizzazione di caratteri utf-8 in un tk.Text
.tkinter - Come impostare il carattere per il testo?
lascio stampa pitone tutti i cognomi noti per tk utilizzando questo codice:
print(font.families(root=self.parent))
e tutti i nomi noti per usi utilizzando questo codice:
print(font.names(root=self.parent))
Tuttavia l'uscita fuori delle famiglie è una lista di caratteri, che hanno nomi composti da una o più parole. E 'facile da impostare quelli con una sola parola in questo modo:
text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')
Ma quando provo lo stesso con i nomi dei caratteri, che consistono di più parole, ottengo un errore:
_tkinter.TclError: expected integer but got <second word of the family name>
posso 't lo stile di esso, dal momento che è un tk e non un widget TTK, quindi purtroppo non posso fare:
style.configure('My.TText', fontsize=12, font='<family name with multiple words>')
ho anche cercato di togliere semplicemente gli spazi del nome di famiglia in questo modo:
text.configure(font='fangsongti')
Ma questo fa sì che tkinter usi un font di fallback. Ho controllato immissione di un nome come:
text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))
e questo si traduce nella stampa la stringa esatta sono entrato come un nome di famiglia. Quindi accetta semplicemente tutto, tranne i nomi multipli di parole.
ho trovato alcuni caratteri, che fanno sembrare OK, ma solo a determinate dimensioni e non sono sicuro se sono disponibili sulla maggior parte dei sistemi:
# helvetica 12
# gothic 13
# mincho 13
Come è possibile impostare i font con nomi costituiti da più parole? Se non riesco, quale font, con un nome con una sola parola, è appropriato per la visualizzazione di caratteri utf-8 come ad esempio caratteri cinesi (ma non esclusivamente!) Sulle dimensioni dei font comuni e è disponibile sulla maggior parte dei sistemi?
Il parametro 'font', se non ho torto, necessita di un oggetto Font! Quindi, crea il tuo oggetto font usando la classe 'Font', e poi assegna il riferimento al campo' font' del tuo widget. – nbro
@nbro: può anche prendere una tupla. –
@BryanOakley Sì, non ero sicuro di questa opzione;) – nbro