功能
- 读取注册表获取当前桌面壁纸路径。
- 提供 GUI 界面展示壁纸预览。
- 添加按钮,一键将壁纸导出为名为
壁纸.png
的文件。
实现代码
依赖库
需要的第三方库:
tkinter
:用于创建 GUI 界面(Python 标准库,自带)。winreg
:操作 Windows 注册表(Python 标准库,自带)。Pillow
:用于图像处理和预览。
安装 Pillow
:
pip install pillow
完整代码
import os
import shutil
import winreg
from tkinter import Tk, Label, Button, filedialog, messagebox
from PIL import Image, ImageTk
def get_wallpaper_path():
"""从注册表获取当前桌面壁纸的路径"""
reg_key = r"Control Panel\Desktop"
value_name = "Wallpaper"
try:
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_key) as key:
wallpaper_path, _ = winreg.QueryValueEx(key, value_name)
return wallpaper_path
except Exception as e:
messagebox.showerror("错误", f"无法读取壁纸路径:{e}")
return None
def preview_wallpaper(wallpaper_path):
"""在 GUI 界面中预览壁纸"""
if not os.path.exists(wallpaper_path):
messagebox.showerror("错误", "壁纸文件不存在。")
return None
try:
# 使用 Pillow 加载图片
image = Image.open(wallpaper_path)
image.thumbnail((800, 450)) # 调整图片大小以适应窗口
return ImageTk.PhotoImage(image)
except Exception as e:
messagebox.showerror("错误", f"无法加载壁纸:{e}")
return None
def export_wallpaper(wallpaper_path):
"""将壁纸导出为 壁纸.png"""
if not os.path.exists(wallpaper_path):
messagebox.showerror("错误", "壁纸文件不存在。")
return
export_path = filedialog.asksaveasfilename(
title="保存为",
defaultextension=".png",
filetypes=[("PNG 文件", "*.png"), ("所有文件", "*.*")]
)
if export_path:
try:
shutil.copy(wallpaper_path, export_path)
messagebox.showinfo("成功", f"壁纸已导出到:{export_path}")
except Exception as e:
messagebox.showerror("错误", f"无法导出壁纸:{e}")
def main():
# 创建主窗口
root = Tk()
root.title("壁纸管理器")
root.geometry("850x600")
# 获取当前壁纸路径
wallpaper_path = get_wallpaper_path()
if not wallpaper_path:
root.destroy()
return
# 显示壁纸路径
Label(root, text=f"当前壁纸路径:{wallpaper_path}", wraplength=800, justify="left").pack(pady=10)
# 预览壁纸
wallpaper_image = preview_wallpaper(wallpaper_path)
if wallpaper_image:
wallpaper_label = Label(root, image=wallpaper_image)
wallpaper_label.image = wallpaper_image # 防止垃圾回收
wallpaper_label.pack(pady=20)
# 导出按钮
export_button = Button(root, text="导出为 壁纸.png", command=lambda: export_wallpaper(wallpaper_path))
export_button.pack(pady=20)
# 启动 GUI 主循环
root.mainloop()
if __name__ == "__main__":
main()
功能详解
-
读取壁纸路径
使用winreg
从HKEY_CURRENT_USER\Control Panel\Desktop
中读取Wallpaper
键值。 -
显示 GUI 界面
使用tkinter
创建一个窗口,显示壁纸路径和预览。 -
壁纸预览
使用Pillow
加载壁纸,并通过ImageTk.PhotoImage
显示到 GUI 中。 -
一键导出壁纸
提供按钮,用户点击后选择保存位置,将壁纸文件导出为壁纸.png
。
运行前准备
- 确保 Python 环境已安装。
- 安装
Pillow
库:pip install pillow
效果预览
-
窗口布局:
- 显示当前壁纸的路径。
- 预览壁纸。
- 导出按钮。
-
操作流程:
- 启动程序后,窗口显示当前桌面壁纸路径和预览。
- 用户点击“导出为 壁纸.png”,选择保存路径,即可将当前壁纸导出。
-
兼容性:
- 支持所有 Windows 系统,只要系统路径合法。