簡體   English   中英

驗證 Tkinter 輸入框

[英]Validating Tkinter Entry Box

我正在嘗試驗證我的輸入框,它只接受浮點數、數字和運算符 (+×÷-, % )。 但是我的程序只接受數字而不是符號。

我認為這是我的條件或 Python Regex 的問題。

這是代碼:

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()

您的正則表達式僅匹配浮點數: \\d*.?\\d* 匹配數字后跟可選的點和更多數字。 如果您要匹配的是像 [float][operator][float] 這樣的模式,那么您可以使用(只需在方括號中添加您想要的運算符):

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

如果您不關心順序而只想允許任何數字和運算符序列:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM