Tkinter - 当我尝试打印我使用 Entry 定义的变量时,打印 returns ".!entry"

Tkinter - When I try to print a varibale that I used Entry to define, the print returns ".!entry"

我正在学习 Tkinter,我正在尝试使用 Entry:

设置一个全局变量
def initial_user_name_set():
    global user_name

    initial_greeting_label()

    user_name = Entry(root)
    user_name.pack()

    user_name_enter_button()

这样我就可以根据 Entry 值创建一个具有唯一输出的标签(user_name_enter_button 函数只是一个按钮,按下时会调用 time_based_greeting 函数:

def time_based_greeting():
    user_name.get()

    if currentTime.hour < 12:
        morning_greeting_label()

    elif 12 <= currentTime.hour < 18:
        afternoon_greeting_label()

    else:
        evening_greeting_label()

    print(user_name)

问候语标签示例:

def evening_greeting_label():
    evening_greeting = Label(root, text="Good evening, " + user_name.get() + ".")
    evening_greeting.pack()

现在仅此一项就可以正常工作了。如果您要输入您的姓名 "Joe";那么标签将是 "Good evening, Joe."

但是,当我稍后尝试 print user_name 变量时;我只是将 ".!entry" 打印到终端而不是 "Joe".

我完全不明白为什么会这样,非常感谢任何帮助。

如果我可以更好地安排我的问题,请告诉我,谢谢。

很明显,user_name 是一个 Entry 对象。您正在以变量 user_name 的名称实例化 class Entry 因此您可以使用它的各种方法,例如 user_name.get() 其中 returns 您在其中键入的内容条目小部件。如果你单独打印 user_name ,你会得到 '.!entry' ,它指的是 user_name 是一个 Entry 对象,也许称之为 tkinters 识别其 [=31= 对象的方式]是的。您甚至可以尝试 print(evening_greeting),它将类似于 '.!labeln',其中 n 是小部件的顺序数,. 是主根 window。

TL;DR: user_name 是一个 Entry 对象,user_name.get() 是对象 user_name 的一个方法,returns 在输入小部件。