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 Paramiko模块的安装与使用详解
Nov 18 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
python numpy存取文件的方式
Apr 01 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
Django 批量插入数据的实现方法
Jan 12 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
python如何基于redis实现ip代理池
Jan 17 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP在线书签系统分享
2016/01/04 PHP
javascript的内存管理详解
2013/08/07 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
举例讲解Python中装饰器的用法
2015/04/27 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python输出指定字符串的方法
2020/02/06 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
python属于解释型语言么
2020/06/15 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
几个SQL的面试题
2014/03/08 面试题
2014年小学植树节活动方案
2014/03/02 职场文书
2014年终工作总结范本
2014/12/15 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
会计岗位职责范本
2015/04/02 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
java中如何截取字符串最后一位
2022/07/07 Java/Android