Próbuję znaleźć najlepszą czcionkę do wyświetlania znaków utf-8 w tk.Text
.tkinter - Jak ustawić czcionkę dla tekstu?
Pozwoliłem python print wszystkie nazwiska znane tk przy użyciu tego kodu:
print(font.families(root=self.parent))
i wszystkie znane nazwiska dla zastosowań wykorzystujących ten kod:
print(font.names(root=self.parent))
Jednak wyjście z rodzinami to lista czcionek, które mają nazwy składające się z jednego lub więcej słów. Łatwo ustawić te, jednym słowem jak ten:
text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')
Ale gdy próbuję samo z nazwami czcionek, które składają się z wielu słów, pojawia się błąd:
_tkinter.TclError: expected integer but got <second word of the family name>
mogę „t styl go, ponieważ jest to tk i nie widget TTK, więc niestety nie mogę zrobić:
style.configure('My.TText', fontsize=12, font='<family name with multiple words>')
próbowałem też po prostu usunąć spacje z nazwiskiem tak:
text.configure(font='fangsongti')
Ale to powoduje, że tkinter używa czcionki zastępczej. Sprawdziłem to, wprowadzając nazwę, taką jak:
text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))
I to powoduje wydrukowanie dokładnego ciągu wprowadzonego jako nazwisko. Więc po prostu akceptuje wszystko, z wyjątkiem wielu nazw słownych.
znalazłem kilka czcionek, które wyglądają OK, ale tylko w określonych rozmiarach i nie jestem pewien, czy są one dostępne w większości systemów:
# helvetica 12
# gothic 13
# mincho 13
Jak mogę ustawić czcionki z nazwy składające się z wielu słowa? Jeśli nie mogę, która czcionka ma jedno słowo, jest odpowiednia do wyświetlania znaków utf-8, jak na przykład chiński (ale nie wyłącznie!) Znaki o typowych rozmiarach czcionek: i są dostępne w większości systemów?
Parametr 'font', jeśli się nie mylę, potrzebuje obiektu Font! Zatem po prostu utwórz obiekt czcionki za pomocą klasy 'Font', a następnie przypisz odniesienie do tego pola' font' widgetu. – nbro
@nbro: może również zająć krotkę. –
@BryanOakley Tak, nie miałem pewności co do tej opcji;) – nbro