Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

IDLE und tkinter mit Tcl/Tk unter macOS

Wichtig

Wenn Sie macOS 12 Monterey oder neuer verwenden, können Probleme mit den Dialogen zum Öffnen und Speichern von Dateien auftreten, wenn Sie IDLE oder andere tkinter-basierte Anwendungen verwenden. Die neuesten Versionen der python.org-Installer (für 3.10.0 und 3.9.8) enthalten gepatchte Versionen von Tk, um diese Probleme zu vermeiden. Diese sollten in einer zukünftigen Tk 8.6.12-Version behoben sein.

Wenn Sie eine Python-Version von einem aktuellen python.org Python-Installer für macOS (3.10.0+ oder 3.9.0+) verwenden, ist keine weitere Aktion erforderlich, um IDLE oder tkinter zu verwenden. Eine integrierte Version von Tcl/Tk 8.6 wird verwendet.

Wenn Sie macOS 10.6 oder neuer verwenden, enthält das von Apple bereitgestellte Tcl/Tk 8.5 schwerwiegende Fehler, die zu Abstürzen von Anwendungen führen können. Wenn Sie IDLE oder Tkinter verwenden möchten, verwenden Sie nicht die von Apple bereitgestellten Pythons. Installieren und verwenden Sie stattdessen eine neuere Version von Python von python.org oder einem Drittanbieter-Distributor, der eine neuere Version von Tcl/Tk bereitstellt oder damit verlinkt.

Die integrierte Entwicklungsumgebung von Python, IDLE, und das tkinter GUI-Toolkit, das sie verwendet, sind abhängig vom Tk GUI-Toolkit, das nicht Teil von Python selbst ist. Für beste Ergebnisse ist es wichtig, dass die richtige Version von Tcl/Tk auf Ihrem Rechner installiert ist. Für aktuelle Python-Installer für macOS, die von dieser Website heruntergeladen werden können, finden Sie hier eine Zusammenfassung der aktuellen Empfehlungen, gefolgt von detaillierteren Informationen.

Python-Version Installer-Variante macOS-Version Empfohlenes Tcl/Tk Alternatives Tcl/Tk Nicht empfohlen
3.10.0, 3.9.8 universal2 10.9+ eingebaut 8.6.11    
3.9.8 Nur Intel 10.9+ eingebaut 8.6.8    

Tk unter macOS

Es gibt derzeit drei Hauptvarianten von Tk, die unter macOS gebräuchlich sind

Aqua Cocoa Tk
Eine neuere native Implementierung, die als universelles 64-Bit- und 32-Bit-Binärpaket verfügbar ist. Diese Variante ist die Standard-native macOS-Variante in Tk 8.6 und seit Tk 8.5.13. Aqua Cocoa-Unterstützung wurde für Tk 8.5 (vor 8.5.13) zurückportiert und von Apple ab macOS 10.6 und von ActiveState ab ihrer Version 8.5.9.1 veröffentlicht.
Aqua Carbon Tk
Da es mit älteren macOS Carbon-Schnittstellen implementiert ist, ist es nur als 32-Bit-Binärpaket verfügbar (normalerweise für Intel- und PowerPC-Prozessoren). Aqua Carbon Tk 8.4 ist in macOS-Versionen 10.4 bis 10.14 enthalten und auch von ActiveState erhältlich. Aqua Carbon-Varianten von Tk 8.5 waren vor ActiveTcl 8.5.9 als ActiveState Community Download erhältlich. Ab 8.5.13 unterstützt das Tk-Projekt keine Carbon-Builds von Tk 8.5 mehr. Reine 32-Bit-Python-Installer, die von dieser Website für ältere Python-Versionen heruntergeladen werden, waren mit Aqua Carbon Tk 8.4 verknüpft.
X11 Tk
Die traditionelle plattformunabhängige UNIX Tk-Implementierung, die einen X11-Server benötigt, wie z. B. das Apple X11.app, das als optionale Komponente in älteren macOS-Versionen oder von Drittanbietern erhältlich ist. 64-Bit- und 32-Bit-Binärpakete können erstellt werden. Obwohl die von dieser Website herunterladbaren Python-Installer X11 Tk nicht unterstützen, können andere Distributoren von Python für macOS dies tun.

Tcl/Tk-Releases

eingebaut 8.6.11

Ab Python 3.9.1 liefern alle aktuellen universellen Python-Installer für macOS, die von python.org heruntergeladen werden können, ihre eigenen privaten Kopien von Tcl/Tk 8.6.11. Sie suchen nicht nach oder verwenden keine externen oder systemeigenen Kopien von Tcl/Tk. Dies ist ein Aqua Cocoa Tk.

eingebaut 8.6.8

Ab Python 3.7.0, 3.6.8 und 2.7.16 liefern alle aktuellen Legacy-64-Bit-Python-Installer für macOS, die von python.org heruntergeladen werden können, ihre eigenen privaten Kopien von Tcl/Tk 8.6.8. Sie suchen nicht nach oder verwenden keine externen oder systemeigenen Kopien von Tcl/Tk. Dies ist ein Aqua Cocoa Tk.

ActiveTcl 8.5.18.0

ActiveState bietet Binärdistributionen von Tcl/Tk an, die aufwärtskompatibel und im Allgemeinen aktueller als die von Apple in macOS-Releases bereitgestellten sind. Diese Version von Tcl/Tk enthält Korrekturen für einige kritische Probleme, auf die Sie beim Verwenden von tkinter oder IDLE stoßen können (siehe Apple 8.5.9 unten). Sie können einen Installer für diese Version von der ActiveState-Website herunterladen. Beachten Sie, dass ActiveState Community Edition Binärpakete nicht Open Source sind und einer ActiveState-Lizenz unterliegen. Sie sollten die Lizenz vor dem Download lesen, um zu überprüfen, ob Ihre Nutzung den Nutzungsbedingungen entspricht. Ab Python 3.7.0, 3.6.8 und 2.7.16 verwenden keine aktuellen Python-Installer für macOS, die von python.org heruntergeladen werden, diese oder andere externe Versionen von Tcl/Tk.

Dies ist ein Aqua Cocoa Tk.

Apple 8.5.9

Diese Version ist in macOS 10.7 bis mindestens macOS 10.14 enthalten. Zum Zeitpunkt der Erstellung dieses Dokuments gibt es mindestens zwei bekannte Probleme mit Tk 8.5.9, die in Apple 8.5.9 Tk vorhanden sind, aber in neueren Upstream-8.5-Versionen behoben wurden. Das schwerwiegendere Problem ist ein sofortiger Absturz von Tk beim Eingeben eines Kompositionszeichens, wie z. B.Option-uauf einer US-Tastatur. (Dieses Problem ist dokumentiert als Tk-Fehler 2907388.) Es gibt auch das allgemeinere Problem der Unterstützung von Eingabemanagern für zusammengesetzte Zeichen (Tk-Fehler 3205153), das ebenfalls in neueren Tcl/Tk 8.5-Versionen behoben wurde. Sie können diese Probleme vermeiden, indem Sie einen aktuellen python.org-Installer verwenden oder eine Drittanbieter-Distribution von Python verwenden, die nicht Apple 8.5.9 Tk verwendet. Dies ist ein Aqua Cocoa Tk.

Apple 8.5.7

Diese Version ist in macOS 10.6 enthalten. IDLE hängt bekanntermaßen oder stürzt ab, wenn es mit dem Apple 8.5.7 verwendet wird, das in allen Versionen von macOS 10.6.x enthalten ist. Aus diesem Grund empfehlen wir dringend, dass Sie nicht versuchen, Tkinter oder IDLE mit dem von Apple bereitgestellten Python 2.6.1 in 10.6 zu verwenden. Installieren Sie stattdessen eine neuere Version von Python, die eine neuere Version von Tk unterstützt. Dies ist ein Aqua Cocoa Tk.

Wie Python wählt, welche Tk-Bibliothek verwendet wird

Hinweis

Während Tcl und Tk separate Frameworks und Bibliotheken sind, sind sie eng miteinander verbunden und werden normalerweise gleichzeitig installiert oder aktualisiert. Sie sollten nicht versuchen, Tcl- und Tk-Versionen zu mischen. Verweise auf eine bestimmte Version von Tk setzen voraus, dass die entsprechende Version von Tcl ebenfalls installiert ist.

Die Python für macOS-Installer, die von dieser Website heruntergeladen werden, verlinken zur Laufzeit dynamisch mit Tcl/Tk macOS-Frameworks. Die Tcl/Tk-Hauptversion wird bei der Erstellung des Installers bestimmt und kann nicht überschrieben werden. Alle aktuellen python.org-Installer verlinken mit ihren eigenen integrierten Tcl/Tk 8.6-Frameworks und verwenden keine externen Tcl/Tk-Frameworks, sodass der Rest dieses Abschnitts nur für nicht aktuelle Versionen gilt und daher nicht mehr unterstützt wird.

Die 64-Bit/32-Bit macOS-Installer von Python für Python 3.6.x und 2.7.x verlinken dynamisch mit Tcl/Tk 8.5-Frameworks. Die dynamische Verlinkung erfolgt, wenn tkinter (Python 3) oder Tkinter (Python 2) zum ersten Mal importiert wird (insbesondere das interne _tkinter C-Erweiterungsmodul). Standardmäßig sucht der macOS-Dynamiklinker zuerst in/Library/Frameworksnach Tcl- und Tk-Frameworks mit der richtigen Hauptversion. Dies ist der Standardpfad für Drittanbieter- oder aus Quellen kompilierte Frameworks, einschließlich der ActiveTcl-Releases. Wenn dort keine Frameworks der richtigen Hauptversion gefunden werden, sucht der Dynamiklinker nach derselben Version in/System/Library/Frameworks, dem Speicherort für von Apple bereitgestellte Frameworks, die mit macOS geliefert werden. (Beachten Sie, dass Sie normalerweise keine Dateien in/System/Library.)

ändern oder löschen sollten. Wie üblich unter macOS sind die installierten Pythons sowie die Tcl- und Tk-Frameworks für die Ausführung auf mehreren CPU-Architekturen (universelle Binärpakete) und über mehrere macOS-Versionen hinweg (Mindestbereitstellungsziel) kompiliert. Damit Python dynamisch mit einer bestimmten Tcl- und Tk-Version verlinken kann, müssen die verfügbaren Architekturen in den Tcl/Tk-Frameworks die Architektur enthalten, in der Python ausgeführt wird, und ihr Mindestbereitstellungsziel darf nicht höher sein als das von Python.

Revisionshistorie

  • 2021-11-05 - aktualisiert für 3.9.8 und macOS 12 Monterey
  • 2021-10-04 - aktualisiert für 3.10.0 und 3.9.7
  • 2020-10-05 - aktualisiert für 3.9.0 und 3.8.6, 2.7 entfernt
  • 2020-08-17 - aktualisiert für 3.7.9
  • 2020-07-20 - aktualisiert für 3.8.5
  • 2020-06-27 - aktualisiert für 3.7.8
  • 2020-05-14 - aktualisiert für 3.8.3
  • 2020-03-10 - aktualisiert für 3.8.2 und 3.7.7
  • 2019-12-19 - aktualisiert für 3.8.1, 3.7.6 und 2.7.17
  • 2019-10-15 - aktualisiert für 3.8.0, 3.7.5 und macOS 10.15
  • 2019-07-08 - aktualisiert für 3.7.4; 3.6.x ist jetzt nur noch für Sicherheitspatches
  • 2019-03-25 - aktualisiert für 3.7.3
  • 2019-03-03 - aktualisiert für 2.7.16
  • 2018-12-24 - aktualisiert für 3.7.2 und 3.6.8
  • 2018-10-20 - aktualisiert für 3.7.1, 3.6.7 und macOS 10.14
  • 2018-06-27 - aktualisiert für 3.7.0 und 3.6.6
  • 2018-05-30 - aktualisiert für 3.7.0b5
  • 2018-05-02 - aktualisiert für 3.7.0b4 und 2.7.15; 32-Bit-nur-Referenzen entfernt
  • 2018-03-29 - aktualisiert für 3.7.0b3 und 3.6.5
  • 2018-02-28 - aktualisiert für 3.7.0b2
  • 2018-01-31 - aktualisiert für 3.7.0b1 und 3.6.4
  • 2017-10-03 - aktualisiert für 3.6.3 und macOS 10.13
  • 2017-09-16 - aktualisiert für 2.7.14; 3.5.x entfernt
  • 2017-07-17 - aktualisiert für 3.6.2
  • 2017-03-21 - aktualisiert für 3.6.1 und (nachträglich) 3.5.3
  • 2016-12-23 - aktualisiert für 3.6.0
  • 2016-12-17 - aktualisiert für 2.7.13
  • 2016-09-23 - aktualisiert für macOS 10.12
  • 2016-07-31 - aktualisiert für 3.5.2 und 2.7.12; 3.4.x entfernt
  • 2015-12-20 - aktualisiert für 3.4.4
  • 2015-12-06 - aktualisiert für 3.5.1, 2.7.11 und macOS 10.11
  • 2015-09-13 - aktualisiert für 3.5.0
  • 2015-05-23 - aktualisiert für 2.7.10 und ActiveTcl 8.5.18.0
  • 2015-02-23 - aktualisiert für 3.4.3
  • 2014-12-10 - aktualisiert für 2.7.9 und ActiveTcl 8.5.17.0
  • 2014-10-16 - aktualisiert für macOS 10.10
  • 2014-10-06 - aktualisiert für 3.4.2 und ActiveTcl 8.5.16.0
  • 2014-09-22 - aktualisiert für 3.4.2rc1
  • 2014-07-01 - aktualisiert für 2.7.8
  • 2014-06-01 - aktualisiert für 2.7.7; 2.7.6 und 3.3.5 entfernt
  • 2014-05-18 - aktualisiert für 3.4.1 und 2.7.7rc1
  • 2014-03-16 - aktualisiert für 3.4.0 und 3.3.5
  • 2014-02-10 - aktualisiert für 3.3.4 und 3.4.0rc1
  • 2014-01-05 - aktualisiert für 3.4.0b2
  • 2013-11-24 - Klarstellung, dass die ActiveState-Website weiterhin auf 8.5.15.0 verweist
  • 2013-11-24 - integrierte Version für 3.4.0b1 entfernt, 3.3.2 und 2.7.5 entfernt
  • 2013-11-10 - ActiveTcl 8.5.15.1; integrierte Version für 3.3.3rc2 und 2.7.6 entfernt.
  • 2013-10-27 - aktualisiert für 3.3.3rc1 und 2.7.6rc1 und ihre integrierte 8.5.15.
  • 2013-10-24 - aktualisiert für macOS 10.9 und ActiveTcl 8.5.15, 3.2.5 entfernt.
  • 2013-10-20 - aktualisiert für 3.4.0a4 und seine integrierte 8.5.15.
  • 2013-09-29 - aktualisiert für 3.4.0a3
  • 2013-09-09 - aktualisiert für 3.4.0a2 und seine integrierte 8.5.14.
  • 2013-08-03 - aktualisiert für 3.4.0a1 und ActiveTcl 8.4.20
  • 2013-05-18 - aktualisiert für ActiveTcl 8.5.14
  • 2013-05-15 - aktualisiert für 3.3.2, 2.7.5 und 3.2.5
  • 2013-04-06 - aktualisiert für 3.3.1, 2.7.4 und 3.2.4
  • 2012-12-26 - aktualisiert für ActiveTcl 8.5.13 und Patch-Installer für Issue 15853
  • 2012-09-29 - aktualisiert für 3.3.0 Final und zurückgesetzt auf ActiveTcl 8.5.11.1
  • 2012-08-02 - aktualisiert für ActiveTcl 8.5.12
  • 2012-07-28 - aktualisiert für macOS 10.8
  • 2012-04-11 - aktualisiert für 3.2.3 Final und 2.7.3 Final
  • 2012-03-18 - aktualisiert für 3.2.3rc2 und 2.7.3rc2
  • 2012-03-04 - aktualisiert für ActiveTcl 8.5.11.1, 3.2.3rc1, 2.7.3rc1, 3.1.4 entfernt
  • 2011-11-12 - aktualisiert für ActiveTcl 8.5.11
  • 2011-09-04 - aktualisiert für 3.2.2 Final
  • 2011-07-21 - aktualisiert für macOS 10.7 und ActiveTcl 8.5.10.1
  • 2011-07-09 - aktualisiert für 3.2.1 Final und ActiveTcl 8.5.10
  • 2011-06-12 - aktualisiert für 2.7.2 Final und 3.1.4 Final
  • 2011-05-30 - aktualisiert für 3.2.1rc, 2.7.2rc und 3.1.4rc
  • 2011-03-08 - Warnungen hinzugefügt und Details darüber, wie Python mit Tcl/Tk-Releases verlinkt wird, aufgenommen
  • 2011-02-20 - aktualisiert für 3.2 Final
  • 2011-01-31 Entwurf 1 - vorläufige Informationen für 3.2rc2
  • 2011-01-14 Entwurf 0