Windows自己可以指定某个目录来随机切换桌面背景图,不过最小间隔1分钟,还想再快点那只能自己动手了。
下面代码全部复制到xxx.py文件就可以了。注释尽可能详细了,就不多废话了。
Windows是可以设置隐藏任务栏和桌面图标,感觉抢了PPT饭碗。
我现在的桌面大概是下图这样的(实际切换没这么快,也不是这么小的桌面,临时改小避免截图超大)
# 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报警,信任即可。怕有问题自己封装吧,一行命令的事。