「AI写代码」一键导出本地壁纸

功能

  1. 读取注册表获取当前桌面壁纸路径。
  2. 提供 GUI 界面展示壁纸预览。
  3. 添加按钮,一键将壁纸导出为名为 壁纸.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()

功能详解

  1. 读取壁纸路径
    使用 winregHKEY_CURRENT_USER\Control Panel\Desktop 中读取 Wallpaper 键值。

  2. 显示 GUI 界面
    使用 tkinter 创建一个窗口,显示壁纸路径和预览。

  3. 壁纸预览
    使用 Pillow 加载壁纸,并通过 ImageTk.PhotoImage 显示到 GUI 中。

  4. 一键导出壁纸
    提供按钮,用户点击后选择保存位置,将壁纸文件导出为 壁纸.png


运行前准备

  • 确保 Python 环境已安装。
  • 安装 Pillow 库:
    pip install pillow
    

效果预览

  1. 窗口布局

    • 显示当前壁纸的路径。
    • 预览壁纸。
    • 导出按钮。
  2. 操作流程

    • 启动程序后,窗口显示当前桌面壁纸路径和预览。
    • 用户点击“导出为 壁纸.png”,选择保存路径,即可将当前壁纸导出。
  3. 兼容性

    • 支持所有 Windows 系统,只要系统路径合法。

代码思路:GitHub - JasonWei512/show-wallpaper-file: 🖼️ A simple Windows utility to show the current wallpaper file in file explorer.

3 Likes

感谢分享:+1:

感谢大佬无私分享。。

感谢大佬分享