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 探针的实现原理
Apr 23 Python
使用python遍历指定城市的一周气温
Mar 31 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
transform python环境快速配置方法
Sep 27 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
详解Python正则表达式re模块
Mar 19 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
Django中的session用法详解
Mar 09 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 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验证码实现代码
2014/05/10 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
详解React中合并单元格的正确写法
2019/01/08 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python模块常用用法实例详解
2019/10/17 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
英文版销售经理个人求职信
2013/11/20 职场文书
施工班组长岗位职责
2014/01/05 职场文书
七年级生物教学反思
2014/01/30 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android