2011-08-03 52 views
3

我是新來的蟒蛇,閒逛,我注意到了這一點:爲什麼沒有返回而不是tkinter.Entry對象

from tkinter import * 
def test1(): 
    root = Tk() 
    txtTest1 = Entry(root).place(x=10, y=10) 
    print(locals()) 
def test2(): 
    root = Tk() 
    txtTest2 = Entry(root) 
    txtTest2.place(x=10, y=10)#difference is this line 
    print(locals()) 
test1() 
test2() 

輸出包含:

'txtTest1': None

'txtTest2': <tkinter.Entry object at 0x00EADD70>

爲什麼test1有None而不是<tkinter.Entry object at ...

我正在使用python 3.2和PyScripter。

回答

4

place方法Entry不返回值。它就地處理現有的Entry變量。

+0

謝謝,我認爲它會返回與該位置的條目,但你的答案很有意義。 – 182764125216

2

因爲Entry.place()返回無

更類似C語言,你可以這樣做:

(txtTest1 = Entry(root)).place(x=10, y=10) 

和txtText1將是Entry對象,但語法是非法的Python編寫的。

+0

謝謝,我過去做過一些C++/c#,所以對我來說很合理。 – 182764125216

1

您正在創建一個對象(txtTest1),然後調用該對象上的方法(place)。因爲你將它編碼爲一個表達式,所以最終方法的結果就是返回的結果。 place回報None,所以txtTest1被設置爲None

如果你想保存到你需要創建從佈局分離部件的引用(這是一件好事,反正做...)

txtTest1 = Entry(root) 
txtTest1.place(x=10, y=10) 
相關問題