【问题标题】:Validating Tkinter Entry Box验证 Tkinter 输入框
【发布时间】:2020-08-31 03:13:38
【问题描述】:

我正在尝试验证我的输入框,它只接受浮点数、数字和运算符(+×÷-、%)。但是我的程序只接受数字而不接受符号。

我认为这是我的条件或 Python 正则表达式的问题。

代码如下:

from tkinter import *
import re

root = Tk()
def correct(inp):
    pattern = re.compile(r'^(\d*\.?\d*)$')
    if pattern.match(inp) is not None:
        return True
    elif inp is "":
        return True
    else:
        return False

a = Entry(root)
e = root.register(correct)
a.config(validate='key', validatecommand=(e, '%P'))
a.pack()

root.mainloop()

【问题讨论】:

    标签: python regex tkinter tkinter-entry


    【解决方案1】:

    您的正则表达式仅匹配浮点数:\d*.?\d* 匹配数字,可选地后跟一个点和更多数字。如果您要匹配的是 [float][operator][float] 之类的模式,那么您可以使用(只需在方括号中添加您想要的运算符):

    pattern = re.compile(r'^\d*\.?\d*[+*/\-%]?\d*\.?\d*$')
    

    如果您不关心顺序,只想允许任何数字和运算符序列:

    pattern = re.compile(r'^[\d.+*/\-%]*$')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多