Python tkinter single label with bold and normal text

David González Blazman picture David González Blazman · Oct 25, 2016 · Viewed 10.5k times · Source

My question is if there is a way to put in a single ttk.label() a text that show the full text with only some words in the bold font like this. I am doing this right now applying styles to many ttk.labels(), but this method imply that I must position every label next to the other, and that the program is multilingual, some strings don't fit correctly with the window. If there is a way to do this, it will be a great advantage to my work. Thanks.

Answer

Bryan Oakley picture Bryan Oakley · Oct 25, 2016

No, you cannot change the attributes of only some of the characters in a Label widget. If you need to style individual character you need to use a small Text widget.

For example:

text = tk.Text(root, height=1, font="Helvetica 12")
text.tag_configure("bold", font="Helvetica 12 bold")

text.insert("end", "Hello, ") 
text.insert("end", "world", "bold") 
text.configure(state="disabled")