[Tkinter-discuss] Python 3.4.0 alpha 2 available

Kevin Walzer kw at codebykevin.com
Wed Sep 25 15:48:59 CEST 2013


Hi Russell,

On 9/24/13 8:23 PM, Russell E. Owen wrote:
> Well, naturally the prime purpose is to demonstrate the crash. However,
> if you use 8.5.11 or if you comment out the menu-related stuff then you
> also will see the button text get larger. I only use the label to access
> the option database.

After a bit more digging, I think the bug here is another instance of 
http://bugs.python.org/issue15853, which caused IDLE to crash. In that 
case I submitted a patch that worked around the bug by changing how a 
font was configured in a certain context; see 
http://hg.python.org/cpython/rev/d089b8fb0f56 for the specifics.

What suggests to me that this bug is similar, or even the same, is that 
changing your sample code from configuring the font object directly to 
specifically configuring the font on the button avoids the crash, cf:

btn = Tkinter.Button(root, text="Change Font", command= lambda: 
btn.configure(font='-size 14'))

Note the difference between font.configure(size=14) and 
btn.configure(font='-size 14'). In the patch we worked out for IDLE, the 
mechanism of the fix was the same, but the expected behavior of the code 
did not change: the font in the button gets bigger.

The reason I focused on a workaround at the Python script level rather 
than a fix in Tk was partly because I couldn't reproduce the crash in 
Tcl itself, even by creating and configuring fonts rather than font 
attributes in a specific widget. That makes fixing the bug in Tk rather 
hard. It's possible that the bug is caused by some combination of 
triggers in Tk-Cocoa's fragile event loop that Python exposes more 
readily than Tcl code.

The upshot of all of this is that I think it would be more productive to 
tweak application-level code to work around the bug--it's not likely 
that any fix for Tk-Cocoa's event loop issues is coming any time soon. I 
realize that may not be the answer you were looking for, and I'm sorry 
about that. But given the problems still remaining with Tk-Cocoa's event 
loop, I actually recommend script-level workarounds as a best practice; 
I do that in my own apps and have not run into a crash in a long time.

--Kevin

-- 
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com


More information about the Tkinter-discuss mailing list