5

我是 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 有 aNone而不是<tkinter.Entry object at ...

我正在使用 python 3.2 和 PyScripter。

4

3 回答 3

4

place方法Entry不返回值。它就地作用于现有的 Entry 变量。

于 2011-08-03T21:35:06.157 回答
3

因为 Entry.place() 返回 None

使用更类似于 C 的语言,您可以执行以下操作:

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

并且 txtText1 将是 Entry 对象,但该语法在 Python 中是非法的。

于 2011-08-03T21:35:43.913 回答
2

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

如果要保存对小部件的引用,则需要将创建与布局分开(无论如何这是一件好事......)

txtTest1 = Entry(root)
txtTest1.place(x=10, y=10)
于 2011-08-03T21:52:00.527 回答