2016-04-28 11 views
0

Ich habe gerade Anaconda installiert und versucht, ein Skript zu starten, das schon bei der Verwendung von Python 2.7 funktionierte. Jetzt kann ich kein Root-Widget in tkinter initialisieren. Ich habe mehrere Ausdrücke ausprobiert, aber bisher funktioniert keiner. Zum Beispiel:Tkinter root Widget wird nicht mit Python 3.5 initialisiert

1.

import tkinter as tk 
root = tk.Tk() 

2.

from tkinter import * 
root = Tk() 

, die ich sollte erraten arbeiten nach der Antwort in: Tkinter doesn't work with Python 3.5 die besagt, dass ich brauche, um das Modul nicht aufrufen (tkinter), wenn Sie alles daraus importieren.

Wie auch immer, was ich erhalte, ist die folgende Meldung:

2016-04-28 17:58:16.168 python[1808:507] -[NSApplication _setup:]: unrecognized selector sent to instance 0x10a5270d0 
2016-04-28 17:58:16.172 python[1808:507] An uncaught exception was raised 
2016-04-28 17:58:16.172 python[1808:507] -[NSApplication _setup:]: unrecognized selector sent to instance 0x10a5270d0 
2016-04-28 17:58:16.172 python[1808:507] (
0 CoreFoundation      0x00007fff8f5d925c __exceptionPreprocess + 172 
1 libobjc.A.dylib      0x00007fff8ef5ee75 

.

.

.

27 python        0x0000000100000cc4 start + 52 
28 ???         0x0000000000000002 0x0 + 2 

Nach dieser Frage module 'tkinter' has no attribute 'Tk' with python 3.5 scheint es, wie es eine Datei irgendwo ist, dass ich löschen soll.

Ich sollte auch sagen, dass ich noch tk.Tk() direkt im Terminal verwenden kann, aber wenn ich es im Skript ausführen, wird es nicht funktionieren.

+0

Folgen Sie 'Import tkinter als tk' mit' print (tk .__ Datei __) '. Unter Windows sollten Sie etwas wie ".../python35/Lib/tkinter/__ main __. Py" sehen. –

+0

Das bekomme ich (auf meinem Mac): /Users/.../anaconda/lib/python3.5/tkinter/__init__.py Also, was mache ich damit? –

+0

Verwerfen Sie die Idee, dass Sie eine Datei namens tkinter.py löschen müssen (wie in der Antwort, die Sie verlinkt haben). Nächster Test: Ist die Anaconda-Kopie von tkinter/__ init__.py offensichtlich fehlerhaft? Probieren Sie 'print (dir (tk), len (dir (tk)))' aus. Enthält es 'Tk' und andere Widget-Klassen? Ich bekomme 165 für die Len (200 mit 2,7) und glaube, es sollte für dich gleich sein. Das Ergebnis sollte eine Teilmenge der Namen in der 2.7-Liste sein. –

Antwort

0

Ich googelte die Fehlermeldung und anscheinend hat es nichts mit Tkinter aber mit Matplotlib zu tun. Ich hatte keine Ahnung, dass das für das Problem relevant war. Hinzufügen:

matplotlib.use('TkAgg') 

löste das Problem. Ich habe keine Ahnung warum. Gefunden die Lösung hier: https://github.com/MTG/sms-tools/issues/29