我正在学习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
的名称实例化类Entry
,因此您可以使用它的各种方法,例如user_name.get()
,它返回您在条目小部件中键入的内容。如果你单独打印user_name
,你会得到'.!entry'
,它指的是user_name
是一个Entry
对象,也许可以称之为识别其类对象的一种方式。您甚至可以尝试print(evening_greeting)
,它将类似于'.!labeln'
,其中n
是小部件的顺序编号,.
是主根窗口。
TL;DR:user_name
是一个Entry
对象,user_name.get()
是对象user_name
的一个方法,它返回条目小部件内部键入的值。