2016-05-11 14 views
-1

Ich mache ein einfaches GUI-Programm in Python mit Tkinter. Das Problem ist, dass wenn ich versuche, den Wert von meinem Eintrag abrufen eine Taste, es kommt wieder mit einem error():Tkinter, Wert aus einem Eintrag abrufen

print(ex1.get()) 
AttributeError: 'NoneType' object has no attribute 'get' 

Wie dies zu vermeiden?

Dies ist mein Code:

root = Tk() 

root.minsize(300,300) 
root.maxsize(300,300) 


n = ttk.Notebook() 

f1 = Frame(n,height=280,width=280) 
f1.propagate(0) 
lx1 = Label(f1,text="x",width=5).grid(row = 1,column=0) 
ex1 = Entry(f1,width = 10).grid(row = 1,column = 1) 

ly1 = Label(f1,text="y",width=5).grid(row=3,column=0) 
ey1 = Entry(f1,width = 10).grid(row=3,column = 1) 

def value(): 
    print(ex1.get()) 


Bcreate = Button(f1,text="CREATE",command=value).grid(row = 10,column = 5) 
n.add(f1,text="add point") 

f2 = Frame(n) 
n.add(f2,text="draw line") 


n.pack() 
+0

Ich bin ein Heck einer Zeit, dies nur mit immer alles auf Anhieb funktioniert. Gibt es noch einen anderen Code, den Sie hinzufügen können? Ich stelle mir vor, dass es einen "Import-Tkinter" oder so etwas geben muss. Außerdem müssen Sie ziemlich sicher sein, dass Sie ".pack()" in den verschiedenen Objekten, die Sie erstellt haben, wie 'ex1', verwenden müssen. – coralvanda

Antwort

1

Bitte lesen Sie, wie man eine richtige MCVE

Hier schreiben ist für Ihr Problem:

from tkinter import Tk, Entry 

root = Tk() 
ent = Entry(root).pack() 
print(ent) 
print(ent.get()) 

Dieser druckt

None 
Traceback (most recent call last): 
    File "F:\Python\mypy\tem.py", line 6, in <module> 
    print(ent.get()) 
AttributeError: 'NoneType' object has no attribute 'get' 

An dieser Stelle sollte es offensichtlich sein, dass .pack()None zurückgibt. Also binden Sie stattdessen das von Entry zurückgegebene Widget.

from tkinter import Tk, Entry 

root = Tk() 
ent = Entry(root) 
ent.pack() 
print(ent) 
print(ent.get()) 

zu bekommen

.2425099144832 
got .