Python tkinter Entry 小部件验证错误:TypeError:'str' object is not callable

普里亚

我正在尝试使用 Tkinter 的 Entry 小部件的内置输入验证,但我无法弄清楚为什么在触发输入验证时会收到 TypeError。(无论什么样的事件触发验证)。在下面的简单代码中,我试图仅验证来自用户的数字输入。字母字符必须禁用应用按钮。但是,一旦您输入任何字符,“TypeError:'str' object is not callable”就会被突袭。任何想法为什么?

from tkinter import *
from tkinter import ttk

root = Tk()

entry_string = StringVar()
entry_field = ttk.Entry(root, textvariable=entry_string, validate='key')
apply_button = ttk.Button(root, text='Apply', state='normal')
entry_field.grid(column = 0 , row = 0)
apply_button.grid(column = 0 , row = 1)

def validate(entry):
    if str(entry).isnumeric():
        apply_button.config(state = 'normal')
        return TRUE
    else:
        return FALSE

def on_invalid():
    apply_button.config(state='disabled')


vcmd = (root.register(validate(entry_string), '%P'))
ivcmd = (root.register(on_invalid()),)
entry_field.config(validatecommand=vcmd, invalidcommand=ivcmd)
root.mainloop()
比利

问题

  • validatecommand 参数的格式应该是(register(f), s1, s2, ...). 您目前是(register(f, s1, s2, ...)).
  • 您将validatefunction 的返回值传递给register,而不是您需要传递函数本身。

参考

我强烈建议您从文档中阅读此页面

使固定

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

entry_string = tk.StringVar()
entry_field = ttk.Entry(root, textvariable=entry_string, validate='key')
apply_button = ttk.Button(root, text='Apply', state='normal')
entry_field.grid(column = 0 , row = 0)
apply_button.grid(column = 0 , row = 1)

def validate(value):
    if str(value).isnumeric():
        apply_button.config(state = 'normal')
        return tk.TRUE
    else:
        return tk.FALSE

def on_invalid():
    apply_button.config(state='disabled')

vcmd = (root.register(validate), '%P')
ivcmd = (root.register(on_invalid),)
entry_field.config(validatecommand=vcmd, invalidcommand=ivcmd)

root.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何修复 Python 中的“TypeError: 'str' object is not callable”错误?

使用 __getattr__ 导致 TypeError: 'str' object is not callable - Python 2.7

Python:如何解决“TypeError:'str' object is not callable”

在 Python 中出现错误`SyntaxWarning: 'str' object is not callable`

为什么我在 python(discord bot) 中出现以下错误:TypeError: 'str' object is not callable

如何在 Python 中解决此错误:“TypeError: ‘str’ object is not callable”

我不断收到 TypeError: 'str' object is not callable

range() 函数产生错误 'TypeError: 'str' object is not callable'

我在 tkinter 中收到此错误:TypeError: 'Button' object is not callable

无法在 Python 3 中获取 tkinter Entry 小部件的内容

有人可以帮我 TypeError: 'str' object is not callable

在Tkinter中交互式验证Entry小部件内容

如果我输入错误的选项,我会收到此错误(TypeError: 'str' object is not callable)

尝试清除Tkinter Entry小部件时出现错误

想要从 DIV 获取文本但收到“TypeError: 'str' object is not callable”错误

tkinter,如何获取Entry小部件的值?

尝试从Entry小部件获取数据(tkinter)

存储来自Entry小部件tkinter的数据

Tkinter Entry 小部件插入宽度

如何使用 python tkinter 中的复选按钮在 Entry 小部件中显示或隐藏文本?

Tkinter Entry小部件在较大的程序中为空(Python 2)

为什么在双击 Entry 小部件时 Python 的 Tkinter 中的 <<ListboxSelect>> 绑定会虚假触发?

从 Tkinter Entry 小部件 Python 3 接收数据时遇到问题

Python/tkinter:添加 Entry 小部件会隐藏我的画布项目

Python 不会将来自 tkinter 的 Entry 小部件的用户输入存储到变量中

在 INSERT INTO table [Python] [Flask] [sqlite3] 之后您可能会收到“TypeError: 'str' object is not callable”的另一个原因

在 Python 3.x 中出错:TypeError: 'int' object is not callable

交互验证tkinter中的Entry小部件内容(第2部分-更改entry对象的属性)

Python OOP Class Students 错误是a1.name type error str not callable