将上述两端代码用tkinter结合起来
时间: 2024-04-16 15:27:01 浏览: 236
以下是结合了两段代码的完整示例,可以使用 Tkinter 界面进行 IP 地址转换:
```python
import tkinter as tk
def ip_conversion():
ip = entry.get()
if ip.isdigit(): # 判断IP地址格式
ip1 = int(ip)
if ip1 > 4294967296: # 2**32,判断ip地址是否合法
result_label.config(text="IP地址不合法")
else:
decimal_ip = ip2decimalism(ip)
binary_ip = decimalism2binary(ip)
result_label.config(text="IP地址是:" + decimal_ip + "\n32位二进制IP地址是:" + binary_ip)
else:
ip_list = ip.split(".")
ipgeshi = len(ip_list) # 统计列表中元素个数
if ipgeshi > 3 and ipgeshi < 5: # 判断ip地址是否合法
for v in ip_list:
v1 = int(v)
if v1 > 254: # 判断ip地址是否合法
result_label.config(text="IP地址不合法")
break
else:
for i in range(len(ip_list)):
ele = bin(int(ip_list[i])) # 转二进制
ip_list[i] = ele[2:] # 把0b切掉 得到后面的二进制01内容
if len(ip_list[i]) < 8: # 补全到八位
strl = "0" * (8 - len(ip_list[i])) + ip_list[i]
ip_list[i] = strl
val = "".join(ip_list) # 列表中的所有元素按照空白字符拼接成一个字符串
decimal_ip = int("0b" + val, base=2)
ip_address = decimalism2ip(decimal_ip)
binary_ip = decimalism2binary(decimal_ip)
result_label.config(text="IP地址是:" + ip_address + "\n32位二进制IP地址是:" + binary_ip)
break
else:
result_label.config(text="IP地址不合法")
def ip2decimalism(ip): # 转32位二进制
dec_value = 0
v_list = ip.split('.') # 将ip分装到列表中
v_list.reverse() # 将列表元素反向排列
t = 1
for v in v_list:
dec_value += int(v) * t # 计算32位二进制
t = t * (2 ** 8) # 返回十进制结果
return str(dec_value)
def decimalism2ip(dec_value): # 转ip地址标准格式
t = 2 ** 8
ip = ""
for _ in range(4):
v = dec_value % t
ip = '.' + str(v) + ip
dec_value = dec_value // t
ip = ip[1:]
return ip
def decimalism2binary(dec_value): # 转32位二进制IP地址
binary_ip = format(dec_value, '032b')
formatted_binary_ip = '.'.join([binary_ip[i:i+8] for i in range(0, 32, 8)])
return formatted_binary_ip
# 创建窗口
window = tk.Tk()
window.title("IP地址转换")
window.geometry("300x250")
# 创建输入框和按钮
entry = tk.Entry(window)
entry.pack(pady=10)
convert_button = tk.Button(window, text="转换", command=ip_conversion)
convert_button.pack()
# 创建结果标签
result_label = tk.Label(window, text="")
result_label.pack(pady=10)
# 运行窗口主循环
window.mainloop()
```
这样,你可以通过运行这个脚本来使用 Tkinter 界面进行 IP 地址转换。用户在输入框中输入 IP 地址,然后点击转换按钮,结果将显示在窗口中的标签上,包括十进制IP地址和32位二进制IP地址。
阅读全文