我已阅读大量关于NonType
错误的人发帖,因为他们尝试.pack()
,.grid()
或.place()
与定义tk widget
在同一行变量。
示例
execute = tk.Button(text="Start", command=lambda:
Elements.ClickApp()).place(x=20, y=250, height=20, width=50)
响应是 A ,2个功能无法实现, B 无论如何都难以在一行中读取。我开始(不情愿地)接受.pack()
,.grid()
或.place()
的额外行,但现在遇到了额外的行(甚至不起作用)。如:
T = tk.Entry()
T.bind("<Key>", Elements.Tbox)
T.place(x=20, y=230, height=20, width=50)
这三行不仅不能放在一行,这就是我想要的......但代码甚至不起作用。而是忽略按下的第一个按钮,然后第二个按钮(及以后)触发Elements.Tbox
。
相反,必须进一步增加换行符:
sv = tk.StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: Elements.Tbox(sv))
T = tk.Entry(textvariable=sv)
T.place(x=20, y=230, height=20, width=50)
然后按下第一个按钮正确触发Elements.Tbox
。
有没有办法,(可能有lambda
)这些新行可以减少? ...当处理大量小部件时,以这种方式分组小部件更容易。我发现这比单独的行更具可读性。
更新
我已将回答的示例代码包含在此问题中......虽然标记正确的答案可能是更好的建议。这是因为有人需要这样或类似的事情,你可以做以下事情:
条目小部件示例:
将EntryBox = tk.Entry()
与.place()
,.pack()
或.grid()
(lambda g: [(EntryBox.place(x=0, y=0, height=20, width=190)) for g['EntryBox'] in [tk.Entry()]])(globals())