验证命令在Tkinter Entry小部件中未按预期工作

时间:2016-05-04 05:05:05

标签: python tkinter

我有一段代码,我希望当输入框为空时查询按钮消失。但这没有发生。当我尝试按任意键打印输入值时,它显示最后一个值,而不是当前值。

例如。如果“测试”是引脚中的先前值,则比按下退格键pin.get()显示测试而不是“测试”。我是python和Tkinter的新手,所以不知道我在做什么傻事。

def send_button ():
    print pin.get()
    if pin.get() == "":
        print "in if"
        query.place_forget()
    else: 
        query.place(relx=0.0, rely=0.75, relwidth=0.2, relheight=0.15)
    return TRUE
#Entry box
pin = StringVar()
ent1 = Entry(top, textvariable = pin, validate = 'key', vcmd = send_button)

#Query button
query = Button (top, command = get_temp, text = 'Query')
top.mainloop()

1 个答案:

答案 0 :(得分:0)

验证在字符插入窗口小部件之前发生。这就是它的全部目的:决定是否允许编辑。它不能使文本的决定已经输入(或删除)。

条目验证有一种方法可以在文本输入之前,输入之后,插入或删除的内容以及其他一些信息中传入文本的值。

请参阅此答案以获取全面的示例:

https://stackoverflow.com/a/4140988/7432