python tkinter包装

Jef*_*eff 1 python tkinter widget packing

有人可以解释为什么当你有一个简单的小部件作为一行代码A工作

Entry(root, width=10).pack(side=LEFT,anchor=W)
Run Code Online (Sandbox Code Playgroud)

但是当您为其命名或附加命令时,代码A不再有效,并为您提供错误消息B.

self.my_entry = Entry(root, width=10).pack(side=LEFT,anchor=W)
Run Code Online (Sandbox Code Playgroud)

你必须使用单独的线包装?

self.my_entry = Entry(root, width=10)
self.my_entry.pack(side=LEFT,anchor=W)
Run Code Online (Sandbox Code Playgroud)

代码A.

self.my_entry.get()
Run Code Online (Sandbox Code Playgroud)

错误消息B

AttributeError: 'NoneType' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 6

pack方法返回None.所以

self.my_label = Label(root, text="My Label").pack(side=LEFT,anchor=W)
Run Code Online (Sandbox Code Playgroud)

设置self.my_labelNone.这就是为什么使用其他命令self.my_label不再有效的原因.

你找到了解决方案; 请pack单独拨打电话:

self.my_label = Label(root, text="My Label")
self.my_label.pack(side=LEFT,anchor=W)
Run Code Online (Sandbox Code Playgroud)