Seite 1 von 1

'import Tkinter as' macht aerger

Verfasst: Donnerstag 6. April 2006, 15:08
von knekke
Folgender Code funktioniert einwandfrei:

Code: Alles auswählen

#!/usr/bin/python
from Tkinter import *

def ok(textfeld):
    text = textfeld.get(1.0, END)
    print text

def gui():
    root = Tk()
    textfeld = Text(root, width=45, height=6)
    textfeld.grid()
    button = Button(root, text="Get", command=lambda: ok(textfeld))
    button.grid()
    root.mainloop()
gui()
Aber wenn ich anstelle von 'from Tkinter import *' 'import Tkinter as tk' benutze:

Code: Alles auswählen

#!/usr/bin/python
import Tkinter as tk

def ok(textfeld):
    text = textfeld.get(1.0, END)
    print text

def gui():
    root = tk.Tk()
    textfeld = tk.Text(root, width=45, height=6)
    textfeld.grid()
    button = tk.Button(root, text="Get", command=lambda: ok(textfeld))
    button.grid()
    root.mainloop()
gui()
bekomme ich folgende Fehlermeldung:
File "tkentry.py", line 5, in ok
text = textfeld.get(1.0, END)
NameError: global name 'END' is not defined
was mache ich falsch????

Verfasst: Donnerstag 6. April 2006, 15:15
von Mr_Snede
ersetze END durch tk.END

Verfasst: Donnerstag 6. April 2006, 15:20
von modelnine
Und vor allen Dingen lies Dir die Semantik zu

Code: Alles auswählen

from <blah> import *
in der Doku durch, dann verstehst Du auch warum das (nach der Änderung) nicht tut, und kriegst auch gleich noch mit warum man das sowieso nicht machen sollte (also das from ... import *)...

Verfasst: Donnerstag 6. April 2006, 15:34
von jens
Irgendwie ist das aber auch etwas über das gerade Anfänger stolpern :( Ich schätzte mal das viele Beispiele im Netz einfach "from Tkinter import *" nutzten :(
Das ist das selbe, wie input() vs. raw_input() :(

Verfasst: Donnerstag 6. April 2006, 15:36
von knekke
Vielen Dank.... da kann man aber auch nun wirklich nicht drauf kommen :roll:

Die Problematik mit 'from <blah> import *' habe ich mitbekommen... ich ueberarbeite gerade alten Code und bin daher auf dieses 'Problem' gestossen.