注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

macOS 上的 IDLE 和 tkinter (Tcl/Tk)

重要提示

如果您使用的是 macOS 12 Monterey 或更高版本,在使用 IDLE 或其他基於 tkinter 的應用程式時,可能會遇到檔案開啟和儲存對話方塊問題。最新的 python.org 安裝程式版本(適用於 3.10.03.9.8)已修補 Tk 版本以避免這些問題。這些問題應該在即將釋出的 Tk 8.6.12 版本中得到修復。

如果您使用的是當前 python.org macOS Python 安裝程式(3.10.0+ 或 3.9.0+)中的 Python,則無需採取進一步措施即可使用 IDLE 或 tkinter。將使用內建的 Tcl/Tk 8.6 版本。

如果您使用的是 macOS 10.6 或更高版本,Apple 提供的 Tcl/Tk 8.5 存在嚴重錯誤,可能導致應用程式崩潰。如果您希望使用 IDLE 或 Tkinter,請勿使用 Apple 提供的 Python。相反,請從 python.org 或提供或連結到更新版本的 Tcl/Tk 的第三方分銷商安裝和使用更新版本的 Python。

Python 的整合開發環境 IDLE 及其使用的 tkinter GUI 工具包 依賴於不屬於 Python 本身的 Tk GUI 工具包。為獲得最佳結果,在您的機器上安裝適當的 Tcl/Tk 版本至關重要。對於可從本網站下載的 macOS 最新 Python 安裝程式,以下是當前建議的摘要以及更詳細的資訊。

Python 版本 安裝程式變體 macOS 版本 推薦的 Tcl/Tk 備用 Tcl/Tk 不推薦
3.10.0, 3.9.8 universal2 10.9+ 內建 8.6.11    
3.9.8 僅限 Intel 10.9+ 內建 8.6.8    

macOS 上的 Tk

目前 macOS 上常用的 Tk 有三種主要變體

Aqua Cocoa Tk
一種較新的原生實現,可用作通用 64 位和 32 位二進位制檔案。此變體是 Tk 8.6 中的標準原生 macOS 變體,自 Tk 8.5.13 起。Aqua Cocoa 支援已回溯到 Tk 8.5(早於 8.5.13),並由 Apple 從 macOS 10.6 開始釋出,由 ActiveState 從其 8.5.9.1 版本開始釋出。
Aqua Carbon Tk
由於它使用較舊的 macOS Carbon 介面實現,因此它僅作為 32 位二進位制檔案(通常用於 Intel 和 PowerPC 處理器)提供。Aqua Carbon Tk 8.4 包含在 macOS 10.4 至 10.14 版本中,也可從 ActiveState 獲取。Aqua Carbon 版本的 Tk 8.5 在 ActiveTcl 8.5.9 之前曾作為 ActiveState Community Download 提供。自 8.5.13 起,Tk 專案不再支援 Tk 8.5 的 Carbon 構建。可從本網站下載的適用於較舊 Python 版本的僅 32 位 Python 安裝程式與 Aqua Carbon Tk 8.4 連結。
X11 Tk
傳統的平臺無關 UNIX Tk 實現,需要 X11 伺服器,例如在較舊的 macOS 版本中作為可選元件提供或從第三方分銷商提供的 Apple X11.app。可以構建 64 位和 32 位二進位制檔案。雖然可從本網站下載的 Python 安裝程式不支援 X11 Tk,但 macOS 的其他 Python 分銷商可能會支援。

Tcl/Tk 版本

內建 8.6.11

截至 Python 3.9.1,所有當前可從 python.org 下載的適用於 macOS 的 universal2 Python 安裝程式都提供自己的 Tcl/Tk 8.6.11 私有副本。它們不查詢或使用任何第三方或系統 Tcl/Tk 副本。這是一個 Aqua Cocoa Tk

內建 8.6.8

截至 Python 3.7.0、3.6.8 和 2.7.16,所有當前可從 python.org 下載的適用於 macOS 的舊版 64 位 Intel-only Python 安裝程式都提供自己的 Tcl/Tk 8.6.8 私有副本。它們不查詢或使用任何第三方或系統 Tcl/Tk 副本。這是一個 Aqua Cocoa Tk

ActiveTcl 8.5.18.0

ActiveState 提供 Tcl/Tk 的二進位制分發,它們與 macOS 版本中 Apple 提供的版本向上相容且通常更新。此版本的 Tcl/Tk 包含對您在使用 tkinter 或 IDLE 時可能遇到的一些關鍵問題的修復(請參閱下面的 Apple 8.5.9)。您可以從 ActiveState 網站 下載此版本的安裝程式。請注意,ActiveState Community Edition 二進位制檔案不是開源的,並受 ActiveState 許可的約束。您應在下載前閱讀許可,以驗證您的使用是否符合其使用條款。截至 Python 3.7.0、3.6.8 和 2.7.16,可從 python.org 下載的任何當前適用於 macOS 的 Python 安裝程式均不使用此版本或任何其他外部版本的 Tcl/Tk。

這是一個 Aqua Cocoa Tk

Apple 8.5.9

此版本包含在 macOS 10.7 到至少 macOS 10.14 中。截至本文撰寫時,Tk 8.5.9 至少有兩個已知問題存在於 Apple 8.5.9 Tk 中,但在更新的上游 8.5 版本中已修復。更嚴重的問題是 Tk 在輸入組合字元時會立即崩潰,例如Option-u在美國鍵盤上。(此問題記錄為 Tk 錯誤 2907388。)還存在更普遍的組合字元輸入管理器支援問題(Tk 錯誤 3205153),該問題也已在更新的 Tcl/Tk 8.5 版本中修復。您可以透過使用當前的 python.org 安裝程式或使用不使用 Apple 8.5.9 Tk 的第三方 Python 發行版來避免這些問題。這是一個 Aqua Cocoa Tk

Apple 8.5.7

此版本包含在 macOS 10.6 中。已知 IDLE 在與所有 macOS 10.6.x 版本中包含的 Apple 8.5.7 一起使用時會掛起或崩潰。因此,我們強烈建議您不要嘗試在 10.6 中使用 Apple 提供的 Python 2.6.1 隨附的 Tkinter 或 IDLE。相反,請安裝支援更新版本 Tk 的新版本 Python。這是一個 Aqua Cocoa Tk

Python 如何選擇要使用的 Tk 庫

注意

雖然 TclTk 是獨立的框架和庫,但它們密切相關,通常同時安裝或更新。您不應嘗試混合搭配 Tcl 和 Tk 版本。對特定版本 Tk 的引用假定也安裝了相應的版本 Tcl

從本網站下載的 Python for macOS 安裝程式在執行時動態連結到 Tcl/Tk macOS 框架。Tcl/Tk 主版本在建立安裝程式時確定,無法覆蓋。所有當前的 python.org 安裝程式都連結到其自己的內建 Tcl/Tk 8.6 框架,並且不使用外部 Tcl/Tk 框架,因此本節的其餘部分僅適用於非當前版本,因此不再受支援。

適用於 Python 3.6.x 和 2.7.x 的 Python 64 位/32 位 macOS 安裝程式動態連結到 Tcl/Tk 8.5 框架。動態連結在 tkinter (Python 3) 或 Tkinter (Python 2) 首次匯入時發生(具體而言,是內部的 _tkinter C 擴充套件模組)。預設情況下,macOS 動態連結器首先在/Library/Frameworks中查詢具有正確主版本的 Tcl 和 Tk 框架。這是第三方或從原始碼構建的框架(包括 ActiveTcl 版本)的標準位置。如果在此處未找到具有正確主版本的框架,動態連結器會在/System/Library/Frameworks中查詢相同版本,這是 macOS 隨附的 Apple 提供的框架的位置。(請注意,您通常不應修改或刪除/System/Library.)

中的檔案。

修訂歷史

  • 2021-11-05 - 更新了 3.9.8 和 macOS 12 Monterey
  • 2021-10-04 - 更新了 3.10.0 和 3.9.7
  • 2020-10-05 - 更新了 3.9.0 和 3.8.6,刪除了 2.7
  • 2020-08-17 - 更新了 3.7.9
  • 2020-07-20 - 更新了 3.8.5
  • 2020-06-27 - 更新了 3.7.8
  • 2020-05-14 - 更新了 3.8.3
  • 2020-03-10 - 更新了 3.8.2 和 3.7.7
  • 2019-12-19 - 更新了 3.8.1、3.7.6 和 2.7.17
  • 2019-10-15 - 更新了 3.8.0、3.7.5 和 macOS 10.15
  • 2019-07-08 - 更新了 3.7.4;3.6.x 現在僅進行安全修復
  • 2019-03-25 - 更新了 3.7.3
  • 2019-03-03 - 更新了 2.7.16
  • 2018-12-24 - 更新了 3.7.2 和 3.6.8
  • 2018-10-20 - 更新了 3.7.1、3.6.7 和 macOS 10.14
  • 2018-06-27 - 更新了 3.7.0 和 3.6.6
  • 2018-05-30 - 更新了 3.7.0b5
  • 2018-05-02 - 更新了 3.7.0b4 和 2.7.15;刪除了僅 32 位引用
  • 2018-03-29 - 更新了 3.7.0b3 和 3.6.5
  • 2018-02-28 - 更新了 3.7.0b2
  • 2018-01-31 - 更新了 3.7.0b1 和 3.6.4
  • 2017-10-03 - 更新了 3.6.3 和 macOS 10.13
  • 2017-09-16 - 更新了 2.7.14;刪除了 3.5.x
  • 2017-07-17 - 更新了 3.6.2
  • 2017-03-21 - 更新了 3.6.1 和(遲來的)3.5.3
  • 2016-12-23 - 更新了 3.6.0
  • 2016-12-17 - 更新了 2.7.13
  • 2016-09-23 - 更新了 macOS 10.12
  • 2016-07-31 - 更新了 3.5.2 和 2.7.12;刪除了 3.4.x
  • 2015-12-20 - 更新了 3.4.4
  • 2015-12-06 - 更新了 3.5.1、2.7.11 和 macOS 10.11
  • 2015-09-13 - 更新了 3.5.0
  • 2015-05-23 - 更新了 2.7.10 和 ActiveTcl 8.5.18.0
  • 2015-02-23 - 更新了 3.4.3
  • 2014-12-10 - 更新了 2.7.9 和 ActiveTcl 8.5.17.0
  • 2014-10-16 - 更新了 macOS 10.10
  • 2014-10-06 - 更新了 3.4.2 和 ActiveTcl 8.5.16.0
  • 2014-09-22 - 更新了 3.4.2rc1
  • 2014-07-01 - 更新了 2.7.8
  • 2014-06-01 - 更新了 2.7.7;刪除了 2.7.6 和 3.3.5
  • 2014-05-18 - 更新了 3.4.1 和 2.7.7rc1
  • 2014-03-16 - 更新了 3.4.0 和 3.3.5
  • 2014-02-10 - 更新了 3.3.4 和 3.4.0rc1
  • 2014-01-05 - 更新了 3.4.0b2
  • 2013-11-24 - 澄清 ActiveState 網站仍提及 8.5.15.0
  • 2013-11-24 - 刪除了 3.4.0b1 的內建,刪除了 3.3.2 和 2.7.5
  • 2013-11-10 - ActiveTcl 8.5.15.1;刪除了 3.3.3rc2 和 2.7.6 的內建。
  • 2013-10-27 - 更新了 3.3.3rc1 和 2.7.6rc1 及其內建的 8.5.15。
  • 2013-10-24 - 更新了 macOS 10.9 和 ActiveTcl 8.5.15,刪除了 3.2.5。
  • 2013-10-20 - 更新了 3.4.0a4 及其內建的 8.5.15。
  • 2013-09-29 - 更新了 3.4.0a3
  • 2013-09-09 - 更新了 3.4.0a2 及其內建的 8.5.14。
  • 2013-08-03 - 更新了 3.4.0a1 和 ActiveTcl 8.4.20
  • 2013-05-18 - 更新了 ActiveTcl 8.5.14
  • 2013-05-15 - 更新了 3.3.2、2.7.5 和 3.2.5
  • 2013-04-06 - 更新了 3.3.1、2.7.4 和 3.2.4
  • 2012-12-26 - 更新了 ActiveTcl 8.5.13 和問題 15853 補丁安裝程式
  • 2012-09-29 - 更新了 3.3.0 最終版並恢復到 ActiveTcl 8.5.11.1
  • 2012-08-02 - 更新了 ActiveTcl 8.5.12
  • 2012-07-28 - 更新了 macOS 10.8
  • 2012-04-11 - 更新了 3.2.3 最終版和 2.7.3 最終版
  • 2012-03-18 - 更新了 3.2.3rc2 和 2.7.3rc2
  • 2012-03-04 - 更新了 ActiveTcl 8.5.11.1、3.2.3rc1、2.7.3rc1,刪除了 3.1.4
  • 2011-11-12 - 更新了 ActiveTcl 8.5.11
  • 2011-09-04 - 更新了 3.2.2 最終版
  • 2011-07-21 - 更新了 macOS 10.7 和 ActiveTcl 8.5.10.1
  • 2011-07-09 - 更新了 3.2.1 最終版和 ActiveTcl 8.5.10
  • 2011-06-12 - 更新了 2.7.2 最終版和 3.1.4 最終版
  • 2011-05-30 - 更新了 3.2.1rc、2.7.2rc 和 3.1.4rc
  • 2011-03-08 - 新增警告幷包含 Python 如何與 Tcl/Tk 版本連結的詳細資訊
  • 2011-02-20 - 更新了 3.2 最終版
  • 2011-01-31 草案 1 - 3.2rc2 的初步資訊
  • 2011-01-14 草案 0