2015-06-16 26 views
0

我想從Tkinter中獲取「Entry」的內容,並將它用作另一個腳本執行的參數。該功能的get()似乎不工作:Tkinter中的get()看起來沒有工作python

import Tkinter 
master = Tkinter.Tk() 

master.geometry('200x100') 

def callback(): 
    #execfile("Hello.py") 
    print e1.get() 

L1 = Tkinter.Label(master, text="Files").grid(row=1) 
L2 = Tkinter.Label(master, text="Dice score").grid(row=2) 

e1 = Tkinter.Entry(master, bg="white").grid(row=1, column=1) 
e2 = Tkinter.Entry(master, bg ="white").grid(row=2, column=1) 

B = Tkinter.Button(master, text="Start script", command = callback).grid(row=0, column=0) 

master.mainloop() 

當我執行這個腳本,然後按下按鈕,而不是打印什麼在E1進入我得到的:

打印e1.get()

AttributeError的: 'NoneType' 對象有沒有屬性 '得到'

回答

2

問題在於這種鏈式調用:

e1 = Tkinter.Entry(master, bg="white").grid(row=1, column=1) 

方法grid(以及pack不是返回Entry對象。 因此,當創建條目的調用成功並返回一個新條目時, 和對.grid的調用也會成功,但此後會返回None,即 您保留在L1, L2, e1, e2, B變量中的對象。

對於所有的人,你應該展開grid呼叫兩條線 - 像這樣 ,否則,你會不會在Python的Tkinter的對象的引用:

e1 = Tkinter.Entry(master, bg="white"); e1.grid(row=1, column=1) 
e2 = Tkinter.Entry(master, bg ="white"); e2.grid(row=2, column=1) 

(您可以檢查此如果您嘗試使用您的代碼按原樣打印這些變量,您將看到包含無)

+0

就是這樣。謝謝 –

+0

如果有效,您應該將答案標記爲已接受。 – jsbueno

+0

我無法做到這一點,因爲我剛剛開始,我的聲望目前爲零 –

相關問題