gpt4 book ai didi

python - IP 地址的 Tkinter 条目验证

转载 作者:行者123 更新时间:2023-12-01 00:39:16 25 4
gpt4 key购买 nike

我使用 Tkinter Entry 将 IPv4 地址作为用户的输入,并且我更喜欢使用小部件的 validatecommand 属性,该属性仅允许格式为 XXX.XXX.XXX.XXX 的条目,即 X 位数字。

可以通过 re 模块将条目与表达式 ^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$ 相匹配来解决该问题但我想提前做。

我尝试使用 ipaddress 模块,如下所示:

import tkinter as tk
import ipaddress as ip
import re

def validate(value):
if ip.ip_address(value):
return True
return False

window = tk.Tk()

tk.Label(window, text = "IP", font = 'Arial 10 bold').grid(row = 0, column = 0, padx = 5, pady = 5, sticky = 'ew')
varip = tk.StringVar()
vcmd = window.register(validate)
ipadd = tk.Entry(window, textvariable = varip, width = 23, validate = 'key', validatecommand = (vcmd, '%P'))
ipadd.grid(row = 0, column = 1, padx = 5, pady = 5)
window.mainloop()

问题是,仅检查引入的第一个字符是否为 IPv4 地址,并且允许使用所有字符,而不仅仅是数字和点。

如何做到这一点?

最佳答案

如果您在验证 Ipv4 时遇到问题,您可以在代码中添加以下逻辑。我有一个类似的 tkinter 程序,需要 Ipv4 验证。这对我有用。

import re 

# Make a regular expression
# for validating an Ip-address
regex = '''^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)'''

# Define a function for
# validate an Ip addess
def check(Ip):

# pass the regular expression
# and the string in search() method
if(re.search(regex, Ip)):
print("Valid Ip address")

else:
print("Invalid Ip address")


# Driver Code
if __name__ == '__main__' :

# Enter the Ip address
Ip = "192.168.0.1"

# calling run function
check(Ip)

Ip = "110.234.52.124"
check(Ip)

Ip = "366.1.2.2"
check(Ip)

关于python - IP 地址的 Tkinter 条目验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com