Python3如何实现Win10桌面自动切换


Posted in Python onAugust 11, 2020

得空写了个自动切换桌面背景图片的小程序。再不写python就要扔键盘了,对vue还有那么一点好感,天天php真是有够烦。

准备工作

准备个文件夹放在桌面上,平时看到什么高清好图就拽进去。

Python3如何实现Win10桌面自动切换

运行脚本

脚本如下:

#!/usr/bin/python
import ctypes
import osimport random
import functools

import schedule

index = 0


def change_background(picture_path: str) -> None:
  ctypes.windll.user32.SystemParametersInfoW(20, 0, picture_path, 3)


def get_pictures(dir_path: str) -> list:
  return [os.path.join(root, name)
      for root, dirs, files in os.walk(dir_path, topdown=False)
      for name in files
      if name.endswith('jpg') or name.endswith('png')]


def log(text):
  def decorator(f):
    @functools.wraps(f)
    def wrap(*args, **kwargs):
      p = f(*args, **kwargs)
      print(f'{text}: {p}')
      return p

    return wrap

  return decorator


@log(f'DESKTOP_BG_IMG switch to')
def change_background_job(dir_path) -> None:
  if dir_path.__class__.__name__ == 'list':
    dir_path = dir_path[0]
  pictures = get_pictures(dir_path)
  index = random.randint(0, len(pictures) - 1)
  change_background(pictures[index])
  return pictures[index]


def scheduler(job: staticmethod, interval, arg_num, *args) -> None:
  if arg_num <= 0:
    schedule.every(interval).seconds.do(job)
  else:
    schedule.every(interval).seconds.do(job, [args[i] for i in range(arg_num)])
  while True:
    schedule.run_pending()


if __name__ == '__main__':
  scheduler(change_background_job, 10, 1, r'C:\Users\zenkilan\Desktop\test_pictures', 'hello', 'world')

函数scheduler接受4个以上参数:

1. 定时执行的job函数对象

2. 执行时间间隔,单位:秒

3. 函数job需要几个参数

4~*. 函数job的参数们

还可以进一步扩充,比如在get_pictures函数里面再加一些rules,低于多少mb的照片就不能作为桌面背景图之类的,接着加or就ok了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python遍历目录中的所有文件的方法
Jul 08 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python及PyCharm下载与安装教程
Nov 18 Python
python pyheatmap包绘制热力图
Nov 09 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
python如何建立全零数组
Jul 19 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
Python3如何使用多线程升程序运行速度
Aug 11 #Python
使用Python pip怎么升级pip
Aug 11 #Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 #Python
Python 代码调试技巧示例代码
Aug 11 #Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 #Python
Python函数递归调用实现原理实例解析
Aug 11 #Python
零基础学python应该从哪里入手
Aug 11 #Python
You might like
php Imagick获取图片RGB颜色值
2014/07/28 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
网页自动跳转代码收集
2009/09/27 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
详解Node 定时器
2018/02/26 Javascript
js实现双色球效果
2020/08/02 Javascript
Python中类的继承代码实例
2014/10/28 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python django model联合主键的例子
2019/08/06 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Vrbo英国:预订度假屋
2020/08/19 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
服装设计师求职信
2014/06/04 职场文书
社区志愿者活动方案
2014/08/18 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
英文辞职信范文
2015/05/13 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers