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>

Nonetest1 の代わりにがあるのはなぜ<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)。これを 1 つの式としてコーディングするため、最終的なメソッドの結果が返されます。placeを返すNoneので、txtTest1に設定されますNone

ウィジェットへの参照を保存したい場合は、作成をレイアウトから分離する必要があります (とにかくこれは良いことです...)

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