gpt4 book ai didi

python - 在 tkinter 中如何将入口函数分配给变量

转载 作者:行者123 更新时间:2023-12-01 04:23:12 25 4
gpt4 key购买 nike

我试图在 if 语句中使用它来检查用户名是否等于接受的答案。我在我的 ent_username 上使用 .get() 来尝试获取选择的名称,但它不起作用。它是否从未真正被输入,因为我需要使用按钮执行更多代码。请帮忙....

import tkinter
action = ""
#create new window
window = tkinter.Tk()

#name window
window.title("Basic window")

#window sized
window.geometry("250x200")

#creates label then uses ut
lbl = tkinter.Label(window, text="The game of a life time!", bg="#a1dbcd")

#pack label
lbl.pack()

#create username
lbl_username = tkinter.Label(window, text="Username", bg="#a1dbcd")
ent_username = tkinter.Entry(window)

#pack username
lbl_username.pack()
ent_username.pack()
#attempting to get the ent_username info to store
username = ent_username.get()

#configure window
window.configure(background="#a1dbcd")

#basic enter for password
lbl_password = tkinter.Label(window, text="Password", bg="#a1dbcd")
ent_password = tkinter.Entry(window)

#pack password
lbl_password.pack()
ent_password.pack()
#def to check if username is valid
def question():
if username == "louis":
print("you know")
else:
print("failed")

#will make the sign up button and will call question on click
btn = tkinter.Button(window, text="Sign up", command=lambda: question())

#pack buttons
btn.pack()

#draw window
window.mainloop()

最佳答案

您的问题是您在创建小部件时尝试获取 Entry 小部件的内容。这将始终是空字符串。您需要将 .get() 移动到函数内部,以便在单击按钮时获取值。

def question():
username = ent_username.get() # Get value here
if username == "louis":
print("you know")
else:
print("failed")

或者if ent_username.get() == "louis":

您确实可以选择使用StringVar,但我从未发现需要使用它,除非与 OptionMenu 小部件一起使用

另外,还有一些旁注。使用command参数时,传入变量时只需要lambda,只需确保删除()即可。

btn = tkinter.Button(window, text="Sign up", command=question)

常见的做法是将 tkinter 导入为 tk。这样,您就不会为所有内容添加 tkinter 前缀,而是使用 tk 前缀。它只是节省打字和空间。所以看起来是这样的,

ent_username = tk.Entry(window)

关于python - 在 tkinter 中如何将入口函数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com