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 04 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
Python模拟登陆实现代码
Jun 14 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
Python发送邮件封装实现过程详解
May 09 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
Python实现分割文件及合并文件的方法
2015/07/10 Python
python difflib模块示例讲解
2017/09/13 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
Python LMDB库的使用示例
2021/02/14 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
初中英语教学反思
2014/01/25 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
调解协议书
2014/04/16 职场文书
詹天佑教学反思
2014/04/30 职场文书
校园运动会广播稿
2014/10/06 职场文书
2014年班级工作总结
2014/11/14 职场文书
歌咏比赛主持词
2015/06/29 职场文书
深入浅析Django MTV模式
2021/09/04 Python
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python