2016-06-04 2 views
-5

Also, ich habe kürzlich von Windows auf Linux Ubuntu gewechselt. Meine Norm verwendet Tkinter für GUI-Anwendungen. Aber vom Switch merkte ich auch, dass die Tkinter-Objekte nicht erkannt werden.Tkinter Objekte funktionieren nicht unter Linux

I.E

#!/usr/bin/env python 
import Tkinter 
Window = Tkinter.Tk() 
Welcome = Label(Window,"Welcome to Dragive") 
Welcome.pack() 
Window.mainloop() 

gibt mir die folgende Fehlermeldung:

NameError: name 'Label' is not defined 

Das fühlt sich so lächerlich da, wie ein solch einfaches Skript kann nicht interpretiert werden.

Ja, ich habe python-tk installiert, nachdem ich festgestellt habe, dass Tkinter nicht mit Linux Python vorgepackt ist. (Sehr ärgerlich tatsächlich)

Ich habe

versucht
from Tkinter import * 

aber das gibt mir diese Fehlermeldung:

Welcome = Label(Window,"Welcome to Dragive") 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2595, in __init__ 
    Widget.__init__(self, master, 'label', cnf, kw) 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2089, in __init__ 
    for k in cnf.keys(): 
    AttributeError: 'str' object has no attribute 'keys' 

All dies ist sehr irritierend. Natürlich würde dies in jedem anderen Fall in Windows laufen. Bislang hat mir Linux in diesem Fall nur Ärger gemacht.

Jede Hilfe wäre dankbar, danke.

+0

Sie den Text als 'Text angeben müssen = "..."' und entweder tun 'Tkinter.Label' oder der 'Import *' obwohl ich * den ersten * sehr * empfehle. –

+0

BTW, wenn Sie Windows verwenden würden Sie den ** genau gleichen Fehler ** erhalten. –

Antwort

0

Die Fehler haben nichts mit Linux vs Windows zu tun. Derselbe Code würde Ihnen die gleichen Fehler auf beiden Plattformen geben.

Wenn Sie Tkinter mit import Tkinter importieren, dann müssen Sie alle tkinter Objekte mit Tkinter. Präfix:

Welcome = Tkinter.Label(...) 

Das ist viel besser als from Tkinter import *, obwohl ich import Tkinter as tk so lieber, dass das Präfix ein wenig kürzer (zB ist:)

Wie für die Fehlermeldung AttributeError: 'str' object has no attribute 'keys', ist dies, weil Sie vernachlässigen, tkinter zu sagen, welches Attribut den Text anwenden soll. Sie müssen den Code ändern, so zu sein (man beachte den "text ="):

Welcome = Label(Window,text="Welcome to Dragive") 
+0

Danke, ich bin mir nicht sicher, wie ich das Textdefinitionsattribut (facepalm) vergessen habe, wie für die Verwendung des * des Todes, ich bleibe dabei, Tkinter als Tk zu importieren, wie du erwähnt hast. Nochmals vielen Dank! –