【发布时间】:2021-08-14 20:34:15
【问题描述】:
当我尝试运行此代码时,它应该打印用户输入,而是每次都打印 None ,即使我为变量赋值。我应该做些什么?我也没有在控制台中收到错误。
from tkinter import *
main_window= Tk()
#labels
Label(main_window, text="Name:").grid(row=0,column=0)
Label(main_window,text="Age:").grid(row=1,column=0)
#text input
name= Entry(main_window,width=30,borderwidth=1).grid(row =0,column=1)
#text input for Class
age= Entry(main_window,width=30,borderwidth=1,).grid(row =1,column=1)
#defines on click function
def on_click():
print(f"Name = {name}, Age = {age}") #prints none when clicked submit
#Button
Button(main_window,text="Submit",command =on_click).grid(row=2,column=1)
main_window.mainloop()
这是代码
输出:
Name = None, Age = None
【问题讨论】:
-
在我链接的问题中,如果您使用:
variable = Widget(...).grid(...),variable将是None,并且您必须将其拆分为 2 行。你也有同样的问题。 -
我试过了,但现在它显示:` Name = .!entry Age = .!entry `
-
@TheLizzard 但正如我最近发现的那样,您可以轻松地使用海象运算符将它们放在一行中(Python3.8+),如下所示:
(variable := Widget(...)).grid(...)然后您可以使用variable,它不会不要None(我建议吗?不是在一般代码中,但可以很容易地用于列表推导或其他循环,否则如果你使用它创建所有内容,阅读它们可能会有点困难) -
@Matiiss 我不建议这样做,原因有两个:很难跟踪所有这些括号和 PEP 8 建议中的 79/80 个字符。