为什么返回“None”而不是tkinter.入口反对?

2024-09-28 23:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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而不是{}?在

我使用的是python3.2和PyScripter。在


Tags: fromnonetkinterdefplaceroottkprint
3条回答

您正在创建一个对象(txtTest1),然后在该对象上调用一个方法(place)。因为您将其作为一个表达式进行编码,所以最终方法的结果就是返回的结果。place返回None,因此txtTest1被设置为None

如果你想保存对一个小部件的引用,你需要把创建和布局分开(这是一件好事…)

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

Entryplace方法不返回值。它作用于现有的入口变量。在

因为入口.地点()无返回

用一种更像C语言的语言,你可以:

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

而txtText1将是Entry对象,但这种语法在Python中是非法的。在

相关问题 更多 >