tkinter - Как установить шрифт для текста?
Я пытаюсь найти лучший шрифт для отображения символов UTF-8 в tk.Text
.
Я позволяю python печатать все фамилии, известные tk, используя этот код:
print(font.families(root=self.parent))
и все известные имена для использования с помощью этого кода:
print(font.names(root=self.parent))
однако вывод семейств-это список шрифтов, имена которых состоят из одного или нескольких слов. Легко установить те с одним словом, как это:
text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')
но когда я пытаюсь то же самое имена шрифтов, которые состоят из нескольких слов, я получаю сообщение об ошибке:
_tkinter.TclError: expected integer but got <second word of the family name>
Я не могу его стиль, так как это TK, а не виджет ttk, поэтому, к сожалению, я не могу сделать:
style.configure('My.TText', fontsize=12, font='<family name with multiple words>')
Я также попытался просто удалить пробелы фамилии такой:
text.configure(font='fangsongti')
но это заставляет tkinter использовать некоторый резервный шрифт. Я проверил его, введя имя:
text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))
и в результате в печать точные строки я вошел в семью имя. Таким образом, он просто принимает все, кроме нескольких словесных имен.
Я нашел некоторые шрифты, которые выглядят нормально, но только в определенных размерах, и я не уверен, что они доступны в большинстве систем:
# helvetica 12
# gothic 13
# mincho 13
как можно установить шрифты с именами, состоящими из нескольких слов? Если я не могу, какой шрифт, имеющий одно адресное имя, подходит для отображения символов utf-8, таких как, например, китайский (но не исключительно!) символы на общих размерах шрифта и is доступно в большинстве систем?
1 ответов
при указании шрифтов таким образом, использовать кортеж:
text.configure(font=("Times New Roman", 12, "bold"))
еще лучше, вы можете создать свои собственные объекты шрифта и указать атрибуты по имени. Примечание: перед созданием объекта шрифта необходимо сначала создать корневое окно.
# python 2
# import Tkinter as tk
# from tkFont import Font
# python 3
import tkinter as tk
from tkinter.font import Font
root = tk.Tk()
text = tk.Text(root)
...
myFont = Font(family="Times New Roman", size=12)
text.configure(font=myFont)
преимущество создания собственных шрифтов заключается в том, что позже вы можете изменить любой атрибут шрифта, и каждый виджет, который использует этот шрифт, будет автоматически обновляться.
myFont.configure(size=14)