[Tutor] Weird tkFont behavior

Steve Willoughby steve at alchemy.com
Thu Jun 16 18:52:21 CEST 2011


I'm probably just doing something stupid, but I can't spot the error.  I 
hope someone here can see what I'm looking past, or knows of a known 
issue with these widgets.

I'm writing a GUI app using ttk widgets in Tkinter, which includes text 
displayed in a regular text widget.  Some text in the widget will be in 
Italics, some bold, some both, some regular.  I assigned those font 
effects as tags for the text widget as you can see in the code below.

However, when I run it, about 10% of the time, the text widget will come 
up with random fonts (e.g., bold italic instead of plain roman), even 
though I confirmed that it's using 'rm' as the tag when inserting the 
text into the widget.

The initial setup code includes:
f = Tkinter.Text(self, ...)
f.tag_config('rm', font=tkFont.Font(family='Helvetica', size=10, 
weight=tkFont.NORMAL, slant-tkFont.ROMAN))
f.tag_config('bf', font=tkFont.Font(family="Helvetica', size=10, 
weight=tkFont.BOLD, slant=tkFont.ROMAN))
f.tag_config('it', font=tkFont.Font(family="Helvetica', size=10, 
weight=tkFont.NORMAL, slant=tkFont.ITALIC))
f.tag_config('bi', font=tkFont.Font(family="Helvetica', size=10, 
weight=tkFont.BOLD, slant=tkFont.ITALIC))
f.tag_config('ref', font=tkFont.Font(family="Helvetica', size=10, 
weight=tkFont.NORMAL, slant=tkFont.ITALIC), foreground='blue', 
underline=True)

text is inserted simply by:
f.insert(END, text, 'rm')

and yet some of the time, even though the 'rm' tag is there, I get one 
of the other fonts I configured for the other tags.  Do I need to keep 
other references to the tkFont objects somewhere else or something?


-- 
Steve Willoughby / steve at alchemy.com
"A ship in harbor is safe, but that is not what ships are built for."
PGP Fingerprint 4615 3CCE 0F29 AE6C 8FF4 CA01 73FE 997A 765D 696C


More information about the Tutor mailing list