应用 Python 实现 Win10 定期 自动 换壁纸

已经开学了,但是疫情原因回不了学校,心想这个假期舒服啊,现实:钉钉、腾讯课堂、雨课堂、超星 ……啊啊啊啊~~~简直不要不要的,要在家被课表安排了。每周的课表还可能不一样,防止不小心忘记课程就翘了课,那不是得时不时就翻翻课表嘛,太难了。要是每次都去学校网站查,那得多麻烦,要是截了图保存,那每次去翻那不是也很累,不如把课表搞在壁纸上,在让电脑自个看着时间换一下,那岂不是极好的。
在这之前,需要安装一个库,pywin32

pip3 install pywin32

Windows API可以参考这篇优秀的博文

首先,弄一个换壁纸的函数:

import win32api
import win32con
import win32gui
from PIL import Image

def setWallpaper(image_path):
    key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
    win32api.RegSetValueEx(key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
    win32api.RegSetValueEx(key, "TileWallpaper", 0, win32con.REG_SZ, "0")
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, image_path, 1 + 2)

def setWallPaperBMP(imagePath):
    bmpImage = Image.open(imagePath)
    newPath = imagePath.replace('.jpg', '.bmp')
    bmpImage.save(newPath, "BMP")
    setWallpaper(newPath)
以上两个函数可以参考这篇优秀的博文

接下来就是设计一下主体函数,弄一个更换规则

先来获取当前日期是在开学第几周
import time

def get_imgid():
    start_time = '2020 2 17'
    start = time.strptime(start_time, '%Y %m %d')
    start_days = int(time.strftime('%j', start))
    now_days = int(time.strftime('%j', time.localtime()))
    img_id = 1 + (now_days - start_days)//7
    return img_id
由于我们的课表每个周都可能会不一样,所以就得按周来换壁纸。开学时间是2月17,那么这就是第一周开始的时间。
要让程序根据时间判断当下是第几周,可以这样来:2月17为起始日期,每过7天,周数加一,那么就需要用到 time库 ,那就用格式 ‘%j’ 吧,它能把你给定的日期转化为 当年的第几天,那么就好办了。
函数返回的是计算所得的周数,阿拉伯数字[…-1,0,1,2,3,4,5…],这是在开学前写好的,所以会有负数的情况。
接着就可以更换对应的壁纸了
import os.path as op
import sys

def ch_wallpaper(img_id):
    if img_id <= 0:
        img_id = 1
    img_name = f'第{img_id}周.png'
    imgs_path = r'c:\users\pxo\desktop\课表'
    img_path = op.join(imgs_path, img_name)
    if not op.exists(img_path):
        return None
    setWallpaper(img_path)

if __name__ == '__main__':
    img_id = get_imgid()
    print(img_id)
    ch_wallpaper(img_id)
    sys.exit()
壁纸【课表】是预先存好的,按照 第n周.png 的格式存储,放在同一文件夹。

以下是完整代码(自行取用)

import win32api
import win32con
import win32gui
import os.path as op
import time
from PIL import Image
import sys

def setWallpaper(image_path):
    key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
    win32api.RegSetValueEx(key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
    win32api.RegSetValueEx(key, "TileWallpaper", 0, win32con.REG_SZ, "0")
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, image_path, 1 + 2)

def setWallPaperBMP(imagePath):
    bmpImage = Image.open(imagePath)
    newPath = imagePath.replace('.jpg', '.bmp')
    bmpImage.save(newPath, "BMP")
    setWallpaper(newPath)

def get_imgid():
    start_time = '2020 2 17'
    start = time.strptime(start_time, '%Y %m %d')
    start_days = int(time.strftime('%j', start))
    now_days = int(time.strftime('%j', time.localtime()))
    img_id = 1 + (now_days - start_days)//7
    return img_id

def ch_wallpaper(img_id):
    if img_id <= 0:
        img_id = 1
    img_name = f'第{img_id}周.png'
    imgs_path = r'c:\users\pxo\desktop\课表'
    img_path = op.join(imgs_path, img_name)
    if not op.exists(img_path):
        return None
    setWallpaper(img_path)

if __name__ == '__main__':
    img_id = get_imgid()
    print(img_id)
    ch_wallpaper(img_id)
    sys.exit()
那么问题来了,代码是写好了,说好的自动换壁纸呢??!代码写好了就会自己 运行? 不急,还有最后的操作,跟我一步一步来
  • 首先在开始菜单搜索 任务计划程序,点击进入,如下图:

是他

  • 然后点击右上角创建基本任务

在这里插入图片描述

  • 起个名称,下一步

在这里插入图片描述

  • 选择 每天 ->下一步

在这里插入图片描述

  • 这里设置一下,然后下一步在这里插入图片描述
  • 直接下一步
  • 这里需要注意了在这里插入图片描述
程序脚本就只用填 python.exe
添加参数填源代码的地址【例如:C:\users\lalala\desktop\ch_wallpaper.py ]
起始于填的是你Python.exe的安装目录【例如:C:\Program Files\Python38\Python38】
  • 然后回到主界面,找到刚添加好的任务,点击属性,修改一下设置在这里插入图片描述在这里插入图片描述在这里插入图片描述

最后,如果还是不能每天运行的话,可以参考我的暴保守做法,修改触发器,让它每次登录都运行一下在这里插入图片描述

亲测能行,已经在使用中,由于直接把课表截下来当桌面实在是太刺眼,就稍微ps了一下,把课表挨张p在了壁纸上存了,看图在这里插入图片描述

通过换壁纸的函数,以及定时自动运行程序这个方法,可以配上爬虫或者其他,自己设计一个自动换壁纸的方案,大噶可以自行发挥呀。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的壳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值