Windows自己可以指定某个目录来随机切换桌面背景图,不过最小间隔1分钟,还想再快点那只能自己动手了。

下面代码全部复制到xxx.py文件就可以了。注释尽可能详细了,就不多废话了。

Windows是可以设置隐藏任务栏和桌面图标,感觉抢了PPT饭碗。

我现在的桌面大概是下图这样的(实际切换没这么快,也不是这么小的桌面,临时改小避免截图超大)

python文件换图标 python更换桌面背景_封装

# python -m pip install --upgrade pip
# pip install pywin32

import os
import win32api, win32gui, win32con
import time
import random

print('缩小窗口到任务栏')

wallpaper_folder = (os.path.expanduser('~')) +  '/Pictures/Wallpaper'  # os.path.expanduser 获得当前用户的主目录, 注意斜杠用法 , Windows里面\有时需要转义 ,用Linux里面的/简单些
wallpaper_files  = os.listdir( wallpaper_folder )     # 所有图片集合(数组), 可以用 print(wallpaper_files) 查看
total_file_number = len(wallpaper_files)              # 总文件

def setWallPaper(filename):
  # open register
  regKey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
  win32api.RegSetValueEx(regKey,"WallpaperStyle", 0, win32con.REG_SZ, "2")  # 图片填充:0=居中   1=适应  2=拉伸
  win32api.RegSetValueEx(regKey, "TileWallpaper", 0, win32con.REG_SZ, "0")  # 图片平铺:0=不平铺 1=平铺
  # refresh screen
  win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,filename, win32con.SPIF_SENDWININICHANGE)

if __name__=='__main__':
  while True:      # 无限循环
    R = random.randint(0,10000)                        # 生成一个随机整数,避免每次运行都是同一个图片开始
    current_file_number = R % total_file_number       # 随机数以总文件数取模,保证循环不超过总文件数
    current_filename = os.path.join( wallpaper_folder ,wallpaper_files[current_file_number])  # 获得需要包含路径的文件名
    setWallPaper( current_filename )   # 调用函数     
    print('Set wallpaper to',current_file_number,'of',total_file_number,',Filename:',wallpaper_files[current_file_number])  # 显示当前文件名
    time.sleep(10)  # 间隔秒数
    
# 如运行不报错,但不能正常切换,手工在“个性化”指定任意图片即可,原因未明

代码是随机播放,想顺序播放也很简单,for 循环 或者 += 就可以了(注意Python 语法不支持 i++ 这样的表达)

多想一下,结合CV人脸识别,谁在摄像头目前自动播放TA喜欢的桌面背景图也是好玩的。

最后毕竟是Windows平台,封装成exe程序文件便于分享给没有装python环境的电脑。 实测 pyinstaller -F xxx.py 这样子就可以了

实在不想在本机配置 python 环境, 我封装好了 exe , 在我的资源里可以下载,
具体使用方法:
1.图片目录下新建 Wallpaper 目录并放入喜欢的图片,即C:\Users\abc\Pictures\Wallpaper ,其中abc是你自己的用户名
2.运行下载的exe开始切换背景图,最小化就能继续。如果不想每次运行都去点最小化,可以创建一个快捷方式,里面有选项“最小化”
3.遇到defendor报警,信任即可。怕有问题自己封装吧,一行命令的事。