python实现windows桌面背景自动变换

首先

​ 在某个下午,无意中感觉自己的桌面背景太丑了,想换一张有特色的的图。马上就上花瓣网,找到类似的星期图,然后就想到自己能不能写个程序,让它根据时间自己变换到符合星期X的图片。

想法:

  • 搞一个bat执行文件
  • 写个python程序,转成exe执行文件

后面确认第二个想法

具体实现

三方库

安装需要的包,处理图片的Pillow(远古win9x时期,通常使用bmp作为图片格式,使用jpeg格式需要打开web支持;现在主流windows都是支持的),处理windows功能的pywin32(64位的系统也装这个)h和win32gui,打包exe的PyInstaller

程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import os
import datetime

import time
import win32api
import win32con
import win32gui
from PIL import Image

DAY_DICT = {0: 'Mon', 1: 'TUE',
2: 'WE', 3: 'THU',
4: 'FRI', 5: 'SA',
6: 'SU'}


def set_desktop(today_pic):
"""修改桌面图片"""
key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,
"Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
win32api.RegSetValueEx(key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
# 2拉伸适应桌面,0桌面居中
win32api.RegSetValueEx(key, "TileWallpaper", 0, win32con.REG_SZ, "0")
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, today_pic, 1+2)


def jpg2bmp():
pic_file = os.listdir('pics')
pic_loc = os.path.dirname(os.path.abspath(__file__)) + '\\pics\\'
# 将jpg转换为bmp图片
for pic in pic_file:
image = Image.open(pic_loc + pic)
image.save((pic_loc + pic).replace('jpg', 'bmp'), 'BMP')


def rtn_pic():
# weekday 返回0-6 对应周一到周日
pic_loc = os.path.dirname(os.path.abspath(__file__)) + '\\pics\\'
day_of_week = datetime.datetime.today().weekday()
today_pic = pic_loc + DAY_DICT[day_of_week + 1] + '.bmp'
return today_pic


def main(today_pic):
while True:
set_desktop(today_pic)
today = datetime.date.today()
new_time = time.time()
# 明天时间
tomorrow = today + datetime.timedelta(days=1)
# 明天时间戳
tomorrow_start_time = int(time.mktime(time.strptime(str(tomorrow), '%Y-%m-%d')))
diff = tomorrow_start_time - new_time
if diff > 0:
time.sleep(diff)


if __name__ == '__main__':
main(rtn_pic())

打包exe

使用时,在主程序文件目录使用命令

pyinstaller -F -w -i 图标文件 程序文件

  • -F 指的打包成exe文件
  • -w 取消控制台显示
  • -i 忽略错误继续打包

举例

pyinstaller -F -w -i my.ico release_1.py

由于我的功能只需要一个执行文件就解决了,当有多个执行文件,可以参看这篇文档

操作成功后会在当前目录下生成build目录(存放配置文件和库文件),dist目录(执行文件),程序名.spec(包含引用程序文件、总结、包文件说明等等)

设置自启动

自启动主要是通过修改注册表项文件而实现的

具体位置,通常位于

计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

然后点击Run,能看见本机已经存在的很多启动项,新建项(程序名)和数值数据(程序存放位置 如d:\work\a.exe)

-------------end-------------
0%