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发送arp欺骗攻击代码分析
Jan 16 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
python正则分析nginx的访问日志
Jan 17 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
Python气泡提示与标签的实现
Apr 01 Python
Python基于numpy模块实现回归预测
May 14 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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
flexigrid 参数说明
2010/11/23 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
详解在React里使用&quot;Vuex&quot;
2018/04/02 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
Python实现一个优先级队列的方法
2020/07/31 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
企业军训感言
2014/02/08 职场文书
男女朋友协议书
2014/04/23 职场文书
岗位说明书范文
2014/05/07 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript