我在python中写了一个简单的年龄验证,如果用户输入的年份少于2000,那就说欢迎。但是,如果用户输入的年份大于2000,则应将其重定向到另一个站点。
我的代码有效,但无论我输入的是哪一年,它都只执行.prefix-wrapper * {
-webkit-box-sizing: inherit;
box-sizing: inherit;
}
语句而不是if
。
这是我的代码:
elif
答案 0 :(得分:7)
您正在将 Entry()
对象与整数进行比较。在Python 2中,数字总是在之前在其他类型之前排序,因此它们总是注册为较小的:
>>> object() > 2000
True
您希望从输入框中获取值并在测试前转换为整数:
entry = int(E3.get())
if entry > 2000:
# ...
else:
# ...
此处不需要执行elif
,除非您希望完全忽略值2000
(您的测试仅适用于大于或小于,不等于的数字)。< / p>
答案 1 :(得分:2)
Entry
是对象类型。您想调用get()
函数。像这样:
EntryBox = Entry(root, bd = 5)
E3 = int(EntryBox.get())
另外,请注意elif
完全没必要。只需使用else
代替。
if E3 < 2000:
tkMessageBox.showinfo(message= "Welcome! ")
else:
tkMessageBox.showinfo(message="You will be redirected")
webbrowser.open_new(url)
答案 2 :(得分:2)
您将Entry
对象与integer
进行比较,永远不会达到if
语句,因为integers
始终在objects
之前排序。看:
>>> a = ['0', 9999, {}, [], False, (), object()]
>>> sorted(a)
[False, 9999, {}, [], <object object at 0xb74fa558>, '0', ()]
>>>
使用get
方法从Entry
获取文字,然后将其转换为int
:
if int(E3.get()) < 2000:
如果您想从Entry中获取整数而不进行转换,则可以使用IntVar()
:
...
v = IntVar()
E3 = Entry(root, bd = 5, textvariable=v)
...
if E3.get() < 2000:
tkMessageBox.showinfo(message= "Welcome! ")
else:
tkMessageBox.showinfo(message="You will be redirected")
webbrowser.open_new(url)