我是python的新手,四处寻找,我注意到了这一点:
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。
答案 0 :(得分:4)
place
的{{1}}方法未返回值。它就地对现有的Entry变量起作用。
答案 1 :(得分:3)
因为Entry.place()返回None
你可以用更像C语言的语言:
(txtTest1 = Entry(root)).place(x=10, y=10)
和txtText1将是Entry对象,但该语法在Python中是非法的。
答案 2 :(得分:2)
您正在创建一个对象(txtTest1
),然后在该对象上调用方法(place
)。因为您将其编码为一个表达式,所以最终方法的结果是返回的结果。 place
返回None
,因此txtTest1
设置为None
如果你想保存对小部件的引用,你需要将创建与布局分开(无论如何都要做好事......)
txtTest1 = Entry(root)
txtTest1.place(x=10, y=10)