如何允许点输入进行“密钥”验证

问题描述 投票:0回答:1

我正在尝试向 IP 地址输入的输入框(tkinter)添加验证。它应该只允许 0 - 255 个输入,由四个点分隔。但我的代码不允许输入框中出现点。有人帮忙吗!

import tkinter as tk

def validate_ip( value_if_allowed, validation_type):
    if validation_type == 'key':
        try:
            if value_if_allowed:
                parts = value_if_allowed.split('.')
                if len(parts) <= 4:
                    for part in parts:
                        if not (0 <= int(part) <= 255):
                            return False
                else:
                    return False
        except ValueError:
            return False
    return True

root = tk.Tk()
root.title("IP Address Validation")

validate_ip_entry = root.register(validate_ip)
ip_entry = tk.Entry(root, validate="key", validatecommand=(validate_ip_entry,  '%P',   '%v'))
ip_entry.pack(padx=10, pady=10)

root.mainloop()

目前只允许输入 255 以内的数字,但之后不允许输入点。

python validation tkinter
1个回答
0
投票

您可以将

int(part)
包裹在
try/except
中并删除空的
part

def validate_ip(value_if_allowed, validation_type):
    if validation_type == 'key':
        for part in value_if_allowed.split('.'):
            # ignore empty string from split!
            if not part:
                continue

            # silently convert part to int.
            try:
                part = int(part)
            except ValueError:
                return False

            if not (0 <= int(part) <= 255):
                return False
        return True
© www.soinside.com 2019 - 2024. All rights reserved.