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 相关文章推荐
windows下ipython的安装与使用详解
Oct 20 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
python中安装django模块的方法
Mar 12 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
python实现简单文件读写函数
Feb 25 Python
python实现简单的名片管理系统
Apr 26 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数组赋值方法
2015/11/07 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
看上去很美观后感
2015/06/10 职场文书
入学证明
2015/06/23 职场文书
企业宣传语大全
2015/07/13 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL