我试图在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()
答案 0 :(得分:2)
您的问题是,在创建窗口小部件时,您正尝试if($var1 == $var2)
条目窗口小部件的内容。这将永远是空字符串。您需要移动函数内的get
,以便在单击按钮时获取值。
.get()
或def question():
username = ent_username.get() # Get value here
if username == "louis":
print("you know")
else:
print("failed")
您可以选择使用if ent_username.get() == "louis":
但我从未发现需要使用它,除了使用OptionMenu小部件
另外,还有几个旁注。使用StringVar
参数时,传入变量时只需要command
,只需确保删除lambda
。
()
通常的做法是btn = tkinter.Button(window, text="Sign up", command=question)
。这样,您就不会使用import tkinter as tk
而不是tkinter
作为前缀。它只是节省了打字和空间。所以看起来是这样,
tk
答案 1 :(得分:0)
最简单的方法是将变量与Entry小部件相关联。对于变量,您必须使用Tkinter variables中的一个,并且它必须是与该类窗口小部件关联的tkinter变量。对于Entry小部件,您需要一个Stringvar。请参阅Effbot的第三方documentation for the Entry widget。
username = tkinter.StringVar()
ent_password = tkinter.Entry(window, textvariable=username)
在事件处理程序question
中,您可以访问Tkinter变量的值。
if username.get() == name_you_want:
print "as expected"
该处理函数名question
是command
参数的正确值,正如Summers所说:
btn = tkinter.Button(window, text="Sign up", command=question)