WinTool - Winodws 系统工具集
- 引言
- 🚀 项目特点
- 现代化 UI
- MVC 架构
- 异步处理
- 跨平台潜力
- 信号槽机制
- 📁 项目结构
- 🛠 安装与运行
- 1. 环境要求
- 2. 安装依赖
- 3. 运行程序
- 4. 以管理员身份运行(推荐)
- 📦 功能模块说明
- 1. 网络检测模块 (modules/network.py)
- 2. 网速检测模块 (modules/speedtest.py)
- 3. IP 端口检测模块 (modules/port_scanner.py)
- 4. Windows 激活模块 (modules/windows_activation.py)
- 5. 文件搬家模块 (modules/file_mover.py)
- 6. 通用工具模块 (modules/utils.py)
- 🎨 UI 架构设计
- MVC 模式应用
- 信号与槽机制
- 🔧 扩展开发指南
- 添加新功能选项卡
- 样式定制
- 📝 打包发布
- 使用 PyInstaller 打包
- 包含资源文件
- 设置管理员权限(可选)
- ⚠ 注意事项
- 权限问题:
- 依赖管理:
- 错误处理:
- 📄 许可证
- 🤝 贡献
引言
基于 PySide6 的 Windows桌面应用程序,提供网络检测、网速测试、端口扫描、Windows 激活、文件搬家等实用功能。
🚀 项目特点
现代化 UI
:使用 PySide6 构建,界面美观流畅
MVC 架构
:业务逻辑与界面分离,代码清晰易维护
异步处理
:使用 QThread 避免界面卡死
跨平台潜力
:核心功能可轻松移植到 macOS/Linux
信号槽机制
:优雅的多线程通信方案
📁 项目结构
WinTool/
├── main.py # 程序入口
├── requirements.txt # 依赖库列表
├── ui/ # 界面相关
│ ├──init.py
│ ├── main_window.py # 主窗口(QMainWindow)
│ ├── tabs/ # 功能选项卡
│ │ ├── network_tab.py # 网络检测
│ │ ├── speedtest_tab.py # 网速测试
│ │ ├── port_tab.py # 端口扫描
│ │ ├── activation_tab.py # Windows 激活
│ │ └── file_mover_tab.py # 文件搬家
│ └── widgets/ # 自定义控件
├── modules/ # 业务逻辑模块
│ ├──init.py
│ ├── utils.py # 通用工具(命令执行、日志等)
│ ├── network.py # 网络检测(ping, tracert, dns)
│ ├── speedtest.py # 网速检测
│ ├── port_scanner.py # IP 端口检测
│ ├── windows_activation.py # Windows 激活
│ └── file_mover.py # 文件搬家与符号链接
├── resources/ # 资源文件
│ ├── icons/ # 图标
│ └── styles.qss # 样式表
└── tests/ # 单元测试(可选)
🛠 安装与运行
1. 环境要求
Python 3.8+
Windows 10/11(部分功能需要管理员权限)
2. 安装依赖
pip install -r requirements.txt
3. 运行程序
python main.py
4. 以管理员身份运行(推荐)
右键点击终端应用,选择"以管理员身份运行",然后启动程序。
📦 功能模块说明
1. 网络检测模块 (modules/network.py)
功能:
Ping 测试:测试目标主机连通性
Tracert 路由跟踪:查看数据包路径
DNS 查询:解析域名 IP
IP 配置查看:显示本机网络配置
接口设计:
from modules.network import NetworkTester, AsyncNetworkWorker
同步调用
success, output = NetworkTester.ping(“www.baidu.com”, count=4)
异步调用(推荐,避免界面卡死)
worker= AsyncNetworkWorker(‘ping’, ‘www.baidu.com’)
worker.finished.connect(callback)
worker.start()
2. 网速检测模块 (modules/speedtest.py)
功能:
下载速度测试
上传速度测试
延迟测试
服务器信息查询
接口设计:
from modules.speedtest import SpeedTestWorker
worker= SpeedTestWorker()
worker.finished.connect(lambda success,result: print(result))
worker.progress.connect(lambda msg: print(msg))
worker.start()
3. IP 端口检测模块 (modules/port_scanner.py)
功能:
单端口测试
批量端口扫描
常用端口预设
接口设计:
from modules.port_scanner import PortScanner, PortTestWorker
单端口测试
is_open, message = PortScanner.test_port(“192.168.1.1”, 80)
批量扫描(异步)
worker = PortTestWorker(“192.168.1.1”, [80, 443, 8080])
worker.finished.connect(callback)
worker.start()
4. Windows 激活模块 (modules/windows_activation.py)
功能:
检查激活状态
KMS 激活
GVLK 密钥安装
注意: 需要管理员权限
接口设计:
from modules.windows_activation import WindowsActivator, ActivationWorker
检查状态
activated, status = WindowsActivator.check_activation_status()
激活(异步)
worker = ActivationWorker(“kms.server.com”)
worker.finished.connect(callback)
worker.start()
5. 文件搬家模块 (modules/file_mover.py)
功能:
文件复制
文件移动
符号链接创建
批量文件夹复制
接口设计:
from modules.file_mover import FileMover, FileMoveWorker
复制文件
success, msg = FileMover.copy_file(“source.txt”, “dest.txt”)
创建符号链接
success, msg = FileMover.create_symlink(“target”, “link_name”)
批量操作(异步)
worker = FileMoveWorker(‘batch_copy’, ‘src_folder’, ‘dst_folder’)
worker.progress.connect(callback)
worker.start()
6. 通用工具模块 (modules/utils.py)
功能:
系统命令执行
日志记录
权限检测
异步命令执行
接口设计:
from modules.utils import run_command, is_admin, CommandWorker
检查权限
if is_admin():
print(“管理员权限”)
执行命令
success, output = run_command([‘ping’, ‘www.google.com’])
异步执行
worker = CommandWorker([‘command’, ‘args’])
worker.output_ready.connect(lambda line: print(line))
worker.finished.connect(callback)
worker.start()
🎨 UI 架构设计
MVC 模式应用
View (ui/):
只负责界面布局和显示
通过信号与 Controller 通信
不包含业务逻辑
Controller (modules/):
封装业务逻辑
提供简单接口给 UI 调用
通过信号返回结果
Model:
数据结构定义
数据验证
信号与槽机制
所有耗时操作都使用 QThread 异步执行:
UI 中创建工作线程
self.worker = SomeWorker(params)
self.worker.finished.connect(self.on_finished) # 完成信号
self.worker.progress.connect(self.on_progress) # 进度信号
self.worker.error.connect(self.on_error) # 错误信号
self.worker.start() # 启动线程
🔧 扩展开发指南
添加新功能选项卡
在 modules/ 下创建业务逻辑模块
在 ui/tabs/ 下创建选项卡 UI 类
在 ui/main_window.py 中添加选项卡
示例:
modules/new_feature.py
from PySide6.QtCore import QThread, Signal
classNewFeatureWorker(QThread):
finished = Signal(bool, str)
defrun(self):
业务逻辑
self.finished.emit(True, “成功”)
ui/tabs/new_tab.py
from PySide6.QtWidgets import QWidget, QVBoxLayout
from modules.new_feature import NewFeatureWorker
classNewTab(QWidget):
def__init__(self):
super().init()
样式定制
修改 resources/styles.qss 文件,QSS 语法与 CSS 类似。
📝 打包发布
使用 PyInstaller 打包
pip install pyinstaller
pyinstaller --onefile --windowed --name=“WinTool” main.py
包含资源文件
pyinstaller --onefile --windowed --add-data “resources;resources” main.py
设置管理员权限(可选)
在 main.py 中添加 manifest 请求管理员权限。
⚠ 注意事项
权限问题:
Windows 激活、符号链接创建等功能需要管理员权限
程序会检测并提示权限状态
依赖管理:
确保安装所有依赖:pip install -r requirements.txt
speedtest-cli 可能因网络问题无法使用
错误处理:
所有异步操作都有错误处理
用户友好的错误提示
📄 许可证
本项目仅供学习和测试使用。
🤝 贡献
gitee 链接
https://gitee.com/li-yichen-666/WinTool
欢迎提交 Issue 和 Pull Request!
可以在链接右侧下载发行版试试
开发团队:WinTool Team
最后更新:2026 年 3 月