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 12 Python
Python中django学习心得
Dec 06 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
解析Python3中的Import
Oct 13 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
利用PHP动态生成VRML网页
2006/10/09 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
利用JS实现数字增长
2016/07/28 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
通用C#笔试题附答案
2016/11/26 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
司机岗位职责
2013/11/15 职场文书
前台接待岗位职责
2013/12/03 职场文书
七年级数学教学反思
2014/01/22 职场文书
求职简历的自我评价
2014/01/31 职场文书
商场主管竞聘书
2014/03/31 职场文书
个人求职信范文
2014/05/24 职场文书
干部作风建设心得体会
2014/10/22 职场文书
婚宴父亲致辞
2015/07/27 职场文书