Tôi đang cố gắng tìm phông chữ tốt nhất để hiển thị các ký tự utf-8 trong một số tk.Text
.tkinter - Cách đặt phông chữ cho văn bản?
tôi để python in tất cả các tên gia đình biết đến tk sử dụng mã này:
print(font.families(root=self.parent))
và tất cả các tên được biết đến với tập quán sử dụng mã này:
print(font.names(root=self.parent))
Tuy nhiên sản lượng ra các gia đình là danh sách các phông chữ có tên bao gồm một hoặc nhiều từ. Thật dễ dàng để thiết lập là những người có một từ như thế này:
text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')
Nhưng khi tôi cố gắng cùng với các tên font chữ, trong đó bao gồm nhiều từ, tôi nhận được một lỗi:
_tkinter.TclError: expected integer but got <second word of the family name>
tôi có thể 't tạo kiểu cho nó, vì nó là một tk và không phải là một phụ tùng TTK, vì vậy tiếc là tôi không thể làm:
style.configure('My.TText', fontsize=12, font='<family name with multiple words>')
tôi cũng đã cố gắng để chỉ cần loại bỏ khoảng trắng của tên gia đình như thế này:
text.configure(font='fangsongti')
Nhưng điều đó khiến tkinter sử dụng một số phông chữ dự phòng. Tôi đã kiểm tra nó để nhập tên như:
text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))
Và điều này dẫn đến việc in chuỗi chính xác mà tôi đã nhập dưới dạng họ. Vì vậy, nó chỉ đơn giản là chấp nhận tất cả mọi thứ, ngoại trừ nhiều tên được đặt tên.
Tôi tìm thấy một số phông chữ, mà làm trông OK, nhưng chỉ ở kích thước nhất định và tôi không chắc chắn nếu họ đang có sẵn trên hầu hết các hệ thống:
# helvetica 12
# gothic 13
# mincho 13
Làm thế nào tôi có thể thiết lập phông chữ với tên gồm nhiều từ ngữ? Nếu tôi không thể, phông chữ nào, có một tên được viết, thích hợp để hiển thị các ký tự utf-8, ví dụ như các ký tự Trung Quốc (nhưng không độc quyền!) Trên các cỡ phông phổ biến và khả dụng trên hầu hết các hệ thống?
Tham số 'font', nếu tôi không sai, cần đối tượng Phông chữ! Vì vậy, chỉ cần tạo đối tượng phông chữ của bạn bằng cách sử dụng lớp 'Font', và sau đó gán tham chiếu đến trường' font' của widget của bạn. – nbro
@nbro: nó cũng có thể lấy một tuple. –
@BryanOakley Vâng, tôi không chắc chắn về tùy chọn đó;) – nbro