Python 验证命令在Tkinter中不起作用
在这个程序中,我试图检查输入是否匹配某个单词(在本例中为“APPLE”),但vcmd似乎无法识别-有什么想法吗Python 验证命令在Tkinter中不起作用,python,validation,tkinter,Python,Validation,Tkinter,在这个程序中,我试图检查输入是否匹配某个单词(在本例中为“APPLE”),但vcmd似乎无法识别-有什么想法吗 from tkinter import * class Window(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.vmcd1 = parent.register(self.validate_entry) self.title =
from tkinter import *
class Window(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.vmcd1 = parent.register(self.validate_entry)
self.title = Label(self, text='Enter here:')
self.title.pack()
self.entry = Entry(self, validatecommand=(self.vcmd1,'%P'))
self.entry.pack()
self.entered=Label(self, text='You entered')
self.entered.pack()
def callback(self):
self.entered.config(text='You entered: ' + self.entry.get())
def validate_entry(self, entry):
print('Code validates entry')
if entry == 'APPLE':
print('This input is correct.')
else:
pass
root = Tk()
frame = Window(root)
frame.pack()
root.mainloop()
总结评论中的内容:
- 验证命令名中有一个输入错误:您编写了
而不是self.vmcd1=…
self.vcmd1=…
- 验证命令应返回
(接受更改)或True
(拒绝更改)。如果我正确理解了您想要实现的目标,您的函数应该始终返回False
,但是如果条目的内容是“APPLE”,请执行一些特殊操作True
def validate_entry(self, entry): print('Code validates entry') if entry == 'APPLE': print('This input is correct.') return True
- 由于
选项的默认值为“无”,因此永远不会执行validate命令。您需要将此选项设置为“键”,例如,如果您希望在用户每次键入内容(更多可能的值)时检查条目的内容validate
- 验证命令名中有一个输入错误:您编写了
而不是self.vmcd1=…
self.vcmd1=…
- 验证命令应返回
(接受更改)或True
(拒绝更改)。如果我正确理解了您想要实现的目标,您的函数应该始终返回False
,但是如果条目的内容是“APPLE”,请执行一些特殊操作True
def validate_entry(self, entry): print('Code validates entry') if entry == 'APPLE': print('This input is correct.') return True
- 由于
选项的默认值为“无”,因此永远不会执行validate命令。您需要将此选项设置为“键”,例如,如果您希望在用户每次键入内容(更多可能的值)时检查条目的内容validate
self.vmcd1
,然后使用self.vcmd1
作为validatecommand。这是一个输入错误。此外,validatecommand函数应该只返回True
或False
以允许或禁止编辑。您应该使用validate
参数定义何时验证条目,您可以在validate=
下找到选项。除了前面提到的问题外,您的validate_条目
还有问题:除非用户将“APPLE”粘贴到小部件中,否则没有任何内容会通过验证。您定义self.vmcd1
,然后使用self.vcmd1
作为validatecommand。这是一个输入错误。此外,validatecommand函数应该只返回True
或False
以允许或禁止编辑。您应该使用validate
参数定义何时验证条目,您可以在validate=
下找到选项。除了前面提到的问题外,您的validate_条目也有问题:除非用户将“APPLE”粘贴到小部件中,否则任何内容都不会通过验证。