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

macOS 上使用 Tcl/Tk 的 IDLE 和 tkinter

重要提示

如果您使用的是 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 的較新版本的 Python 或提供或連結到較新版本的 Tcl/Tk 的第三方發行版。

Python 的整合開發環境 IDLE 和它使用的 tkinter GUI 工具包 依賴於 Tk GUI 工具包,而後者本身不是 Python 的一部分。為了獲得最佳結果,重要的是在您的計算機上安裝正確版本的 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 和 Tk 8.5.13 中標準的本機 macOS 變體。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 獲得。在 ActiveTcl 8.5.9 之前,Tk 8.5 的 Aqua Carbon 變體作為 ActiveState 社群下載提供。從 8.5.13 開始,Tk 專案不再支援 Tk 8.5 的 Carbon 構建。從本網站下載的適用於舊版 Python 的僅限 32 位的 Python 安裝程式與 Aqua Carbon Tk 8.4 連結。
X11 Tk
傳統的平臺無關的 UNIX Tk 實現,需要 X11 伺服器,例如 Apple X11.app(在較舊的 macOS 版本中作為可選元件提供,或從第三方發行商處獲得)。可以構建 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 的 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 社群版二進位制檔案不是開源的,並受 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 bug 2907388。)還有更普遍的輸入管理器對合成字元的支援問題(Tk bug 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 一起使用時會掛起或崩潰。因此,我們強烈建議您不要嘗試將 Tkinter 或 IDLE 與 10.6 中的 Apple 提供的 Python 2.6.1 一起使用。而是安裝支援較新版本 Tk 的較新版本的 Python。這是一個Aqua Cocoa Tk

Python 如何選擇要使用的 Tk 庫

注意

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

從本網站下載的 適用於 macOS 的 Python 安裝程式在執行時動態連結到 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.)

中的檔案)與 macOS 上常見的情況一樣,已安裝的 Python 以及 Tcl 和 Tk 框架都構建為可在多個 CPU 架構(通用二進位制檔案)和多個 macOS 級別(最低部署目標)上執行。為了使 Python 能夠與特定的 Tcl 和 Tk 版本動態連結,Tcl/Tk 框架中可用的架構必須包含 Python 正在執行的架構,並且它們的最低部署目標不應大於 Python 的部署目標。

修訂歷史

  • 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 和 Issue 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