Hello Guido,

On 11/6/13, 5:02 PM, Guido van Rossum wrote:
Sadly, on Mac with Python 3 and Tcl/Tk 8.5 this exhibits exactly the
problem I am complaining about -- the updates are erratic and often need
to be helped along by moving the mouse or changing the focus.

You may be seeing an issue that's specific to recent versions of Tk on the Mac.

In 2009, Apple sponsored a port of Tk from the Carbon API to the Cocoa API because they had deprecated Carbon. The Cocoa port has many advantages, not the least of which is better integration with various system API's, but it has drawbacks as well. Specifically, the event loop integration between Tk and Cocoa is complicated and fragile, much more so than between Tk and Carbon (where the event loops were very similar and easy to integrate).

This results in the kind of behavior you are seeing--sometimes there are issues with event loop updates, window redraw, etc., and sometimes event dispatching causes crashes.

My predecessor as maintainer of Tk on the Mac, Daniel Steffen, is the author of the Cocoa port, but is now working for Apple and can't work on Tk anymore. The result is that many of the event loop bugs must remain unfixed--the code there is devilishly complex and, frankly, Daniel is the only one who really understands it. I'm not even persuaded that the impedance mismatch between the two event loops can be bridged, as Daniel already did quite a bit of bug fixing and refinement of the event loop stuff after the initial release of the Cocoa port.

In most cases I'm left recommending various workarounds for the behavior, such as judicious use of update(), update_idlestasks(), after(), and so on. Exercising the event loop by moving the mouse also helps in some instances.

Hope that sheds some light on what you are seeing.

--Kevin

--
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to