跳到主要内容用 Tkinter 做一个 Windows 磁盘清理工具 | 极客日志PythonVScodeAI写作AI
用 Tkinter 做一个 Windows 磁盘清理工具
WindowsCleaner v5.0 是一个基于 Python Tkinter 的 Windows 桌面清理工具,核心能力包括临时文件和缓存清理、注册表无效项检测、启动项管理以及大文件分析。它支持日光、黑暗、冬季三套主题和中英文切换,清理与扫描任务通过后台线程执行,避免界面卡顿。项目还加入了管理员权限检测、操作确认和异常兜底,适合做日常系统维护。
项目概述
WindowsCleaner v5.0 是一款用 Python Tkinter 写的 Windows 系统清理工具,重点放在磁盘清理、基础优化和日常维护上。它不是那种只做个壳子的桌面 Demo,功能拆得比较实:清理、分析、启动项管理、注册表检查都放进去了,界面也尽量做得顺手一些。
核心特性
主题和界面
- 三套主题:日光、黑暗、冬季,切换很直接
- 使用 Segoe UI Emoji 作为界面字体,风格偏轻松
- 布局支持窗口缩放,拉大拉小不会马上乱掉
清理和优化
- 扫描临时文件、缓存、日志文件
- 清理无效注册表项,需要管理员权限
- 管理启动项,减少开机时的负担
- 查找大文件,方便快速定位占空间的内容
多语言支持
- 中文、英文双语界面
- 语言切换是即时的,不需要重启
- 语言文件用 JSON 存,后面加新语言也不麻烦
安全设计
- 启动时会检测管理员权限
- 删除和清理前会弹确认框
- 异常处理做了兜底,避免直接把程序带崩
项目结构
WindowsCleaner/
├── clean_app.py # 主程序入口
├── resources/ # 资源文件夹
│ ├── fonts/ # 字体文件目录
│ ├── icons/ # 图标文件目录
│ └── languages/ # 语言文件目录
│ ├── zh_CN.json # 中文语言包
│ └── en_US.json # 英文语言包
├── README.md # 项目说明文档
└── requirements.txt # 依赖包列表
快速开始
环境要求
- Python 3.6+
- Windows 7/8/10/11(部分功能只在 Windows 上可用)
安装步骤
先把项目拉到本地,再进入目录安装依赖:
pip install -r requirements.txt
如果想手动装,至少需要这些库:
pip install psutil winshell
运行方式也很直接:
python clean_app.py
功能细节
磁盘清理
临时文件扫描走的是系统常见路径,包含 Windows 临时目录、用户临时目录、缓存和日志文件。浏览器缓存也考虑进去了,不过只覆盖 Chrome、Edge 和 Firefox 这几类主流浏览器,别的浏览器暂时没做。
temp_files, total_size = FileCleaner.scan_temp_files()
支持的清理位置包括:
- Windows 临时文件夹(C:\Windows\Temp)
- 用户临时文件夹(AppData\Local\Temp)
- 系统缓存文件
- 浏览器缓存(Chrome、Edge、Firefox)
- 系统日志文件
回收站清理也单独做了入口:
FileCleaner.empty_recycle_bin()
系统优化
注册表清理这一块比较敏感,所以程序只做无效项检测和清理提示,不会替你'智能修复'一切问题。检测范围主要是失效的软件卸载项、错误文件关联和启动项残留。
invalid_entries = RegistryCleaner.scan_invalid_registry()
cleaned_count = RegistryCleaner.clean_invalid_entries(invalid_entries)
startup_items = SystemOptimizer.optimize_startup()
SystemOptimizer.disable_startup_item(item)
磁盘分析
除了清理,项目还提供了磁盘使用情况分析和大文件查找。这个功能在实际排查空间占用时挺有用,至少能先看出是哪个分区吃紧,而不是盯着资源管理器猜。
disk_info = DiskAnalyzer.get_disk_usage()
large_files = DiskAnalyzer.analyze_large_files("C:\\", limit=50)
- 磁盘总容量和使用量
- 使用百分比
- 文件系统类型
- 大文件列表(>50MB)
界面实现
THEMES = {
'light': {'bg_color': '#f0f0f0', 'text_color': '#000000', 'accent_color': '#007acc'},
'dark': {'bg_color': '#2b2b2b', 'text_color': '#ffffff', 'accent_color': '#007acc'}
}
按钮组件也做了简单封装,悬停反馈是 Tkinter 里比较实用的一种增强,成本不高,效果却比裸按钮顺眼很多:
class StyledButton(tk.Button):
"""自定义样式按钮,支持悬停效果"""
def __init__(self, master, theme_config, **kwargs):
super().__init__(master, **kwargs)
self.bind('<Enter>', self.on_enter)
self.bind('<Leave>', self.on_leave)
def on_enter(self, event):
"""鼠标悬停效果"""
self.config(bg=self.theme_config['button_hover'])
{
"app_title": "WindowsCleaner v5.0 - 专业系统优化工具",
"nav_optimize": "🔧 优化加速",
"status_ready": "就绪",
"quick_scan": "🚀 快速扫描系统垃圾"
}
技术实现
后台线程是这个项目里比较关键的一点。清理和扫描这类操作如果直接放在主线程里,界面很容易卡住,用户会以为程序死了。这里用线程把耗时任务丢到后台,UI 只负责刷新状态。
def quick_scan(self):
"""快速扫描 - 在新线程中执行"""
self.status_label.config(text="扫描中...")
threading.Thread(target=self._perform_quick_scan, daemon=True).start()
管理员权限检测比较标准,失败时直接返回 False:
def is_admin():
"""检测当前是否以管理员身份运行"""
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
文件是否被占用,用重命名测试是个简单粗暴但够用的办法。它不优雅,不过在做桌面工具时很实用:
def is_file_in_use(filepath):
"""检查文件是否正在被使用"""
try:
os.rename(filepath, filepath)
return False
except:
return True
文件操作还包了一层安全装饰器,至少能把权限错误和其他异常拦下来,不至于让用户看到一屏堆栈:
def safe_file_operation(func):
"""文件操作安全装饰器"""
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except PermissionError:
print(f"权限错误:{args[0]}")
return None
except Exception as e:
print(f"操作失败:{e}")
return None
return wrapper
使用方式
- 快速清理:进入'优化加速',选中项目后执行清理
- 系统分析:在'磁盘分析'里看空间占用和大文件
- 系统优化:到'高级'页处理注册表和启动项
有些功能需要管理员模式,程序会自动检测并提示。文件批量迁移和自动清理计划也支持,但这类功能通常更适合熟悉自己机器状态的人,不建议一上来全开。
注意事项
注册表相关操作风险最高,动手前最好先备份。文件删除也没有回收机制,清掉就是清掉了。另一个现实问题是,浏览器缓存和系统文件并不总是能顺利删掉,常见原因就是文件正在被占用。
系统要求上没什么花活:Windows 环境、Python 环境、足够的磁盘空间,最好还用管理员权限运行一次,很多功能会顺畅不少。
更新记录
v5.0
- 新增三套主题支持(日光、黑暗、冬季)
- 增加中英文双语界面
- 调整界面布局和交互
- 强化文件清理逻辑
- 改进错误处理
v4.0
- 重构代码结构
- 添加注册表清理
- 实现启动项管理
- 优化性能
v3.0
开发扩展
如果要继续加功能,整体结构其实挺适合再拆几层:清理项、语言包、主题配置都能独立扩展。
def scan_new_category():
"""扫描新的清理类别"""
files = []
return files, total_size
{"new_feature": "新功能名称", "new_button": "新按钮文本"}
'new_theme': {'bg_color': '#your_color', 'text_color': '#your_color', 'accent_color': '#your_color'}
WindowsCleanerApp
├── __init__() # 初始化应用
├── setup_ui() # 设置用户界面
├── setup_fonts() # 加载字体
├── switch_theme() # 切换主题
├── switch_language() # 切换语言
└── [页面方法] # 各个页面的显示方法
性能优化建议
扫描时尽量用生成器,能少占一点内存就少占一点,尤其是在大目录下遍历文件时更明显:
def scan_files_generator(path):
for root, dirs, files in os.walk(path):
for file in files:
yield os.path.join(root, file)
class ScanCache:
def __init__(self, ttl=300):
self.cache = {}
self.ttl = ttl
进度反馈也别省,用户至少要知道程序是在扫,还是已经卡住了:
def update_progress(current, total):
progress = (current / total) * 100
self.progress_bar['value'] = progress
贡献方式
项目支持 Fork、建分支、提交代码和发起 Pull Request 这套常规流程。代码风格按 PEP 8 来,注释和单元测试能补就补,文档也要同步更新,不然功能写完了别人还是看不懂。
问题反馈建议直接走 GitHub Issues,尽量把复现步骤、系统环境和错误信息写清楚,这样比一句'有 bug'有用得多。
相关资源
后续计划
短期内还会继续补系统优化项、扩浏览器缓存支持、把动画效果做得更细一点。长远看,如果要往前走,插件系统和网络优化会比继续堆界面更有价值;跨平台支持当然可以想,但那已经不是简单改几处条件判断能解决的事了。
许可证
本项目采用 MIT 许可证,详情见 LICENSE 文件。
相关免费在线工具
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online