This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: Tkinter apps including IDLE may not display properly on OS X 10.9 Mavericks
Type: behavior Stage: resolved
Components: IDLE, macOS, Tkinter Versions: Python 3.3, Python 3.4, Python 2.7
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ned.deily Nosy List: ned.deily, python-dev
Priority: normal Keywords:

Created on 2013-10-24 06:32 by ned.deily, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (6)
msg201093 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-10-24 06:32
On OS X 10.9 Mavericks, there is a problem with Aqua Cocoa Tk 8.5 (8.5.15 or earlier) when run in 64-bit mode, the default for most applications.  The symptoms are that Tk widgets may not be properly drawn or updated on the screen unless some HID activity takes place, like mousing over the widget or by entering text via the keyboard.  Since the problem can also be reproduced using the Tk wish shell, it is not a Python problem but it can have an impact on Tkinter-based applications, like IDLE.  The problem is being tracked by the Tk project here:

The problem affects current and recent third-party Tk 8.5.x releases, such as the ActiveTcl 8.5.15 recommended for use with current 3.3.2 and 2.7.5 installers. It also affects the Built-in 8.5.x Tcl/Tk included with pre-release 3.4.x installers.  It appears that the problem does not affect the Apple Tk 8.5.9 shipped with OS X 10.9, which is used by the system Pythons included in OS X 10.9.  However, as in recent previous OS X releases, the Apple 8.5.9 Tk has serious problems so its use is not recommended: see for more information.

This issue will be updated as solutions become available.  In the meantime, there are some workarounds:

1. Run Tkinter applications in 32-bit mode.  If you are using Python 2.7.x, 3.2.x, 3.3.x, or 3.4.x from one of the "Mac OS X 64-bit/32-bit x86-64/i386 Installers", the easiest way to do this is to append "-32" to the python command name:

/usr/local/bin/python3.4   ->  /usr/local/bin/python3.4-32
/usr/local/bin/python3.3   ->  /usr/local/bin/python3.3-32
/usr/local/bin/python2.7   ->  /usr/local/bin/python2.7-32

If you are using a Python from a "Mac OS X 32-bit i386/PPC Installer", you will not see this problem; but keep in mind that those Pythons are linked with Tcl/Tk 8.4 for compatibility with older OS X releases.

2. If you launch IDLE from a 64-bit-capable installation by double-clicking on its icon in the 10.9 Finder, you may see this problem. (Due to a quirk, IDLE 2.7 launched this way may not be affected.)  You can force IDLE 3.x to run in 32-bit mode by launching it from a Terminal window instead of double-clicking.  For Python 3.x, try

/usr/local/bin/python3.3-32 -m idlelib

/usr/local/bin/python3.4-32 -m idlelib

For Python 2.7.x, if you need to launch from the command line rather than double-clicking, try:

/usr/local/bin/python2.7-32 /usr/local/bin/idle2.7
msg201510 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2013-10-28 02:51
New changeset 1712a22aa1a9 by Ned Deily in branch '2.7':
Issue #19373: Apply upstream change to Tk 8.5.15 fixing OS X 10.9

New changeset 8609f6df9974 by Ned Deily in branch '3.3':
Issue #19373: Apply upstream change to Tk 8.5.15 fixing OS X 10.9

New changeset 33b31971ae9d by Ned Deily in branch 'default':
Issue #19373: merge from 3.3
msg201516 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-10-28 08:19
Update: release candidate ("rc1") packages for Python 3.3.3 and 2.7.6 have been created.  They are available here:

For 3.3.3 and 2.7.6, the OS X 64-bit/32-bit x86-64/i386 installers now also include built-in versions of Tcl/Tk 8.5, eliminating the need to install third-party versions of Tcl/Tk.  Shortly after the rc1 packages were released, an upstream Tk fix for this problem was published by the Tk project.  Updated "rc1_rev1" installers which include that Tk fix should be available shortly on the 3.3.3 and 2.7.6 web pages.  The Tk fix will also be included in the final 3.3.3 and 2.7.6 releases and in the next pre-release of 3.4.0 (expected to be 3.4.0b1).  If you are using a third-party version of Tcl/Tk 8.5 on OS X 10.9, check with the vendor for fix availability.
msg201683 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2013-10-29 22:01
New changeset f5e0fd7db675 by Ned Deily in branch 'default':
Issue #19373: Add Misc/NEWS entry.
msg201686 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2013-10-29 22:19
New changeset bcbe4099206f by Ned Deily in branch '2.7':
Issue #19373: Apply upstream change to Tk 8.5.15 fixing OS X 10.9
msg202521 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-11-10 12:17
Update:  ActiveTcl is now available and includes the fix for the 10.9 refresh problem documented here.

Unfortunately, the built-in versions of Tcl/Tk 8.5 included with the pre-release OS X 64-bit/32-bit x86-64/i386 installers for 3.3.3rc1 and 2.7.6rc1 (as described above) inadvertently broke compatibility with several third-party projects.  As a result, as of 3.3.3rc2 and 2.7.6 final, the built-in Tcl/Tk support has been removed and these Pythons once again dynamically link with third-party Tcl and Tk 8.5 frameworks in /Library/Frameworks, such as those from ActiveState.  You should install ActiveTcl (or later 8.5.x versions) for use with these releases, if possible.
Date User Action Args
2022-04-11 14:57:52adminsetgithub: 63572
2013-11-10 12:17:39ned.deilysetmessages: + msg202521
2013-10-29 22:19:20python-devsetmessages: + msg201686
2013-10-29 22:01:24python-devsetmessages: + msg201683
2013-10-28 08:19:44ned.deilysetstatus: open -> closed
resolution: fixed
messages: + msg201516

stage: resolved
2013-10-28 02:51:53python-devsetnosy: + python-dev
messages: + msg201510
2013-10-24 06:32:31ned.deilycreate