我将IPv4地址作为用户的输入,使用Tkinter条目,我更希望使用widget的validatecommand属性,该属性只允许使用格式的条目三十、 XXX.XXX公司.XXX,X位数。在
这个问题可以通过使用表达式^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$匹配条目来解决,但我想事先这样做。在
我尝试使用IP地址模块如下:
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
验证。这对我有用。在我已设法解决了以下问题:
相关问题 更多 >
编程相关推荐