|
本帖最后由 15126222223 于 2025-1-13 09:51 编辑
我做一个分享给楼主用,不知道是否满足楼主的需求。
暂停下载,软件有问题,等我有时间重新修改代码
Python写的原代码
- import tkinter as tk
- from tkinter import messagebox
- import subprocess
- # 获取所有网络接口的名称,包括禁用的网络
- def get_all_network_interfaces():
- interfaces = []
- try:
- result = subprocess.run(["netsh", "interface", "show", "interface"], capture_output=True, text=True)
- for line in result.stdout.splitlines():
- if "已启用" in line or "已禁用" in line: # 匹配网络行
- parts = line.split()
- if len(parts) > 3: # 避免处理空行或无效行
- interfaces.append(parts[-1]) # 网络名通常是最后一个部分
- except Exception as e:
- print(f"获取网络接口失败: {e}")
- return interfaces
- # 打开网络连接
- def open_network(interface_name):
- try:
- subprocess.run(['netsh', 'interface', 'set', 'interface', interface_name, 'enabled'], check=True)
- print(f"网络 {interface_name} 已启用。")
- except subprocess.CalledProcessError:
- print(f"启用网络 {interface_name} 失败。")
- # 关闭网络连接
- def close_network(interface_name):
- try:
- subprocess.run(['netsh', 'interface', 'set', 'interface', interface_name, 'disabled'], check=True)
- print(f"网络 {interface_name} 已禁用。")
- except subprocess.CalledProcessError:
- print(f"禁用网络 {interface_name} 失败。")
- # 获取选择的网络接口
- def handle_network_action():
- selected_networks = []
- for i, var in enumerate(checkbox_vars):
- if var.get():
- selected_networks.append(all_networks[i])
- if not selected_networks:
- messagebox.showwarning("警告", "请至少选择一个网络进行操作。")
- return
- # 执行打开或关闭网络操作
- for network in selected_networks:
- if action.get() == "启用":
- open_network(network)
- elif action.get() == "禁用":
- close_network(network)
- messagebox.showinfo("成功", "已完成对所选网络的操作。")
- # 创建主界面
- def create_gui():
- global checkbox_vars, all_networks, action
- window = tk.Tk()
- window.title("网络控制器 --Lance Owen制作")
- window.geometry("400x300") # 设置窗口大小
- window.resizable(False, False) # 禁止调整窗口大小
- # 设置全局字体
- default_font = ("微软雅黑", 12)
- # 标题
- tk.Label(window, text="请选择要操作的网络:", font=("微软雅黑", 16, "bold")).pack(pady=10)
- # 获取所有网络接口
- all_networks = get_all_network_interfaces()
- checkbox_vars = []
- # 动态创建复选框列表
- frame = tk.Frame(window)
- frame.pack(pady=10, padx=10)
- col_count = 3 # 列数
- for i, network in enumerate(all_networks):
- var = tk.BooleanVar()
- checkbox_vars.append(var)
- tk.Checkbutton(frame, text=network, variable=var, font=default_font).grid(row=i // col_count, column=i % col_count, sticky="w", padx=20, pady=10)
- # 操作选择
- action_frame = tk.Frame(window)
- action_frame.pack(pady=20)
- action = tk.StringVar(value="启用") # 默认操作是启用网络
- tk.Radiobutton(action_frame, text="启用网络", variable=action, value="启用", font=default_font).grid(row=0, column=0, padx=20)
- tk.Radiobutton(action_frame, text="禁用网络", variable=action, value="禁用", font=default_font).grid(row=0, column=1, padx=20)
- # 应用按钮
- tk.Button(window, text="应用", command=handle_network_action, font=("微软雅黑", 14), width=10, bg="#4CAF50", fg="white").pack(pady=20)
- window.mainloop()
- # 启动程序
- if __name__ == "__main__":
- create_gui()
复制代码
|
评分
-
查看全部评分
|