【问题标题】:How do I validate the contents of the Entry widget?如何验证 Entry 小部件的内容?
【发布时间】:2012-08-09 00:44:38
【问题描述】:

在我的 Tkinter 应用程序中,我有一个 Entry 小部件,用户应该用数字填充它。

是否可以将输入的值限制为intfloatlong

具体来说,用户应该只输入一个数字:

  • 这可以是floatintlong
  • 用户只能输入一个.(一个数字没有两个点)。

import tkinter as tk

class App():
    def __init__(self):
        self.root = tk.Tk()
        vcmd = (self.root.register(self.on_validate), '%d', '%i', '%s', '%S')
        self.entry = tk.Entry(self.root, validate="key", validatecommand=vcmd)
        self.entry.pack()
        self.root.mainloop()

    def on_validate(self, d, i, s, S,):
        if S == "-" and s.count('-') != 1 and int(i) == 0:
            return True
        if d == "0":
            return True
        try:
            return int(S) >= 0 and int(S) <= 9
        except:
            if S == "." and s.count('.') != 1:
                return True
            return False

app = App()

【问题讨论】:

标签: python tkinter widget tkinter-entry


【解决方案1】:

您不能限制数据类型,但可以限制允许的字符。查看问题的答案Python/Tkinter: Interactively validating Entry widget content

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2023-01-13
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多