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 03 Python
详解Python中heapq模块的用法
Jun 28 Python
python WindowsError的错误代码详解
Jul 23 Python
python如何去除字符串中不想要的字符
Jul 05 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
linux环境下Django的安装配置详解
Jul 22 Python
python 标准差计算的实现(std)
Jul 29 Python
python os.fork() 循环输出方法
Aug 08 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
Django 实现对已存在的model进行更改
Mar 28 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
phalcon框架使用指南
2016/02/23 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
理解javascript中的闭包
2017/01/11 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
详解vue 命名视图
2019/08/14 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
关于python多重赋值的小问题
2019/04/17 Python
如何更优雅地写python代码
2019/07/02 Python
python 有效的括号的实现代码示例
2019/11/11 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
员工团队活动方案
2014/08/28 职场文书
2014年药房工作总结
2014/11/22 职场文书
初中信息技术教学计划
2015/01/22 职场文书