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中的对象拷贝示例 python引用传递
Jan 23 Python
Python实现的简单万年历例子分享
Apr 25 Python
Python类属性的延迟计算
Oct 22 Python
python数据封装json格式数据
Mar 04 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
python区块及区块链的开发详解
Jul 03 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Pytorch转onnx、torchscript方式
May 25 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Python之字符串的遍历的4种方式
Dec 08 Python
python 利用panda 实现列联表(交叉表)
Feb 06 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中GET变量的使用
2006/10/09 PHP
我的论坛源代码(八)
2006/10/09 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript 写类方式之九
2009/07/05 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
js实现抽奖效果
2017/03/27 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
python 图像平移和旋转的实例
2019/01/10 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
大学在校生求职信范文
2013/11/21 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python