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多线程学习资料
Dec 19 Python
在Python中使用Mako模版库的简单教程
Apr 08 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
python和shell获取文本内容的方法
Jun 05 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
Python理解递归的方法总结
Jan 28 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
用django设置session过期时间的方法解析
Aug 05 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 Python
python scrapy简单模拟登录的代码分析
Jul 21 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中的cookie
2006/11/26 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
python的help函数如何使用
2020/06/11 Python
C# .NET面试题
2015/11/28 面试题
法律专业自我鉴定
2013/10/03 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
团队拓展活动方案
2014/08/28 职场文书
教师节倡议书
2014/08/30 职场文书
保险公司演讲稿
2014/09/02 职场文书
2015年超市工作总结
2015/04/09 职场文书
新闻报道稿范文
2015/07/23 职场文书
2016新年致辞
2015/08/01 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python
CentOS MySql8 远程连接实战
2022/04/19 MySQL