《狂飙》壁纸太帅,Python自动切换太酷(8)

news2024/12/28 23:10:50

小朋友们好,大朋友们好!

我是猫妹!

要说最近什么电视剧最火?

非《狂飙》莫属。

《狂飙》剧名来自毛主席诗词“国际悲歌歌一曲,狂飙为我从天落”。

导演借用“狂飙”二字来比喻剧中的扫黑除恶大风暴。

据了解,《狂飙》是央视8套近九年以来的收视第一电视剧,全剧平均收视率1.54%,单日全端播放量首次突破3亿。

猫妹没有看这部电视剧,主要是没时间,估计也看不懂,好像很烧脑。

但看着猫爸偷偷把电脑桌面改成了《狂飙》壁纸,就知道他有多么喜欢这部电视剧了。

咱们今天聊聊,如何用Python自动切换电脑桌面。

先看效果

效果就是设置一个文件夹,里面保存的是好看的电脑壁纸图片。

运行程序,桌面会被修改,按照程序中的逻辑来更换电脑背景。

修改桌面

我们一般是怎么修改壁纸的呢?

都是通过鼠标点击桌面属性修改。

还有其他方法吗?

还可以通过修改注册表来实现,我们今天的Python修改桌面就是在这个基础上扩展实现的。

在运行中输入regedit,弹出的注册表中的WallPaper就是桌面的壁纸哦!

咱们如果可以动态修改这个值,不就是实现了动态切换壁纸吗?

代码实现

这里需要用到几个库:win32api、win32con、win32gui、PIL等。

其中的pywin32和PIL需要通过pip指令安装。

Python 没有自带访问 windows 系统 API 的库的,需要下载 pywin32,pywin32 是一个第三方模块库,方便开发者快速调用 windows API 的一个模块库。

它直接包装了几乎所有的 Windows API,可以方便地从 Python 直接调用,该模块另一大主要功能是通过 Python 进行 COM 编程。

win32api :模块内定义了常用的一些 API函数,例如:MessageBox

win32gui :模块内定义了一些有关 图形操作的API,例如:FindWindow

win32con :模块内定义了 windows API 内的宏,即 宏常量。例如 MessageBox 内的 MB_OK。

要实现壁纸切换,可以调用如下函数:

defsetWallpaperFromBMP(imagepath):# imagepath 作为壁纸图片的路径                   key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Control panel\\Desktop',0,win32con.KEY_SET_VALUE)# 打开注册表,并指定对子项的操作,在更改注册表内容时,一定要先打开注册表    win32api.RegSetValueEx(key,'wapaperStyle',0,win32con.REG_SZ,'2')# key 表示对哪一个子项修改值,'wapaperStyle'是指壁纸类型,0表示桌面居中,win32con.REG_SZ是数据的类型,2代表拉伸    win32api.RegSetValueEx(key, "Tilewallpaper", 0, win32con.REG_SZ, "0")# 设置背景风格,0 为平铺    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath,win32con.SPIF_SENDWININICHANGE)# 刷新屏幕

PyWin32 地址:

https://github.com/mhammond/pywin32

PyWin32 文档:

http://timgolden.me.uk/pywin32-docs/contents.html

猫妹在测试过程中遇到如下错误:

pywintypes.error: (0, ‘SystemParametersInfo’, ‘No error message is available’)

猫妹和猫爸在网上了解到,这是因为使用win32gui.SystemParametersInfo() 时,图片格式一定是.bmp格式,所以需要使用Image模块将其转换。

该函数如下:

defsetWallPaper(imagePath):# convert jpg to bmp    bmpImage = Image.open(imagePath)    newPath = imagePath.replace('.jpg', '.bmp')    bmpImage.save(newPath, "BMP")    setWallpaperFromBMP(newPath)

有了这两个关键的函数,在电脑上建立一个目录,存放图片,分别遍历其中的图片,就可以自动切换电脑中的图片啦!

defchange_wapaer2(path):# 存放图片文件的文件夹路径        img_lst = os.listdir(path=path)  # 获取文件夹下的所有图片,并存放在列表for i in range(len(img_lst)):#通过下标            print(img_lst[i])            img_path = os.path.join(path,img_lst[i])            setWallPaper(img_path)            time.sleep(1)

好了,今天的分享就到这里,谢谢朋友们的阅读。

我是猫妹,咱们下次见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

店铺微信公众号怎么创建?

有些小伙伴问店铺微信公众号怎么创建,在解答这个问题之前,先简单说说店铺和微信公众号关系: 店铺一般是指小程序店铺,商家通过小程序店铺来卖货;微信公众号则是一个发布信息的平台。但是两者之间可以打通,…

如何去选择合适的自动化测试工具?

自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中,几乎任一软件开发过程都需要在开发阶段的某个时候进行自动化测试,以加速回归测试的工作。自动化测试工具可以帮助测试人员以及整个团队专注于自动化工具无法处理的各自任务&a…

搭建Hexo博客-第5章-一些我用到的小技巧

搭建Hexo博客-第5章-一些我用到的小技巧 搭建Hexo博客-第5章-一些我用到的小技巧 搭建Hexo博客-第5章-一些我用到的小技巧 这大概是这组博客地最后一篇文章了,在这篇文章里,我想和大家分享一些我写博客时用到的小技巧。 Vs Code 我用的编辑器是 Vs C…

SpringBoot-自动配置-@Import注解与@EnableAutoConfiguration注解

Import注解 Enable* 底层依赖于 Import 注解导入一些类,使用 Import 导入的类会被 Spring 加载到 IOC 容器中Import 提供了4种用法: 1.导入Bean2.导入配置类3.导入ImportSelector实现类;一般用于加载配置文件中的类4.导入ImportBeanDefinitio…

阿里一面:谈一下你对DDD的理解?2W字,帮你实现DDD自由

说在前面 在微服务的应用开发中,DDD 用得越来越普及。 在40岁老架构师 尼恩的读者交流群(50)中,DDD是一个非常、非常高频的交流话题。 最近,有小伙伴面试阿里时,遇到一个面试题: 谈谈你对DDD的理解? 小伙…

我应该在我的博客上写什么? 介绍如何撰写初学者容易担心的文章

我想有很多人开了博客,但想不起来写作,无法取得进展。 博客的主题和文章的内容不会仅仅通过写你想做的事情来工作。 重要的是要了解用户想要阅读的内容以及人们可能收集的内容,并将其与您想要编写的内容很好地匹配。 这一次,我…

怎么拥有一个帅气的 CMD 命令窗口 ❓ - Windows

自从拥有这样一个炫酷的命令窗口,我都舍不得关掉它了 关于我为什么我要闲的去 “打扮” 一个命令窗口,这要从星期五下午的一场 摸鱼 🐠 开始,当时我要创建一个 vue ts vite 的项目练练手,为新项目开始做准备&#x…

spring-web InvocableHandlerMethod 源码分析

说明 本文基于 jdk 8, spring-framework 5.2.x 编写。author JellyfishMIX - github / blog.jellyfishmix.comLICENSE GPL-2.0 类层次 HandlerMethod,处理器的方法的封装对象。HandlerMethod 只提供了处理器的方法的基本信息,不提供调用逻辑。 Invoca…

大数据面试小抄

项目地址:https://github.com/GTyingzi/BigDATA 该项目是自己在学习大数据过程中整理、总结下来的一份面试小抄。涵盖Hadoop、Spark、Flink、Hive、HBae、Kafka、ES、Zookeeper等。 开源给大家,若感觉不错欢迎star~ 摘取Flink部分如下文章目录FlinkFli…

Zebra ZT410 ZT411 导入中文字体

1.设置--发送到打印机 2.字体--添加--下载 --windows 字体库下载到zebra 打印机 3.字体--工具--调用 ZEBRA驱动包中驱动。 4.老版打印机导入方式 Zebra ZPL条形码打印机上如何下载和使用TrueType或External字体-敏用数码(上海北京济南洛阳)|专注于条码数据处理 (chongshang.co…

Python空间分析| 01 利用Python计算全局莫兰指数(Global Moran‘s I)

全局空间自相关 空间自相关(spatial autocorrelation)是指一些变量在同一个分布区内的观测数据之间潜在的相互依赖性。Tobler(1970)曾指出“地理学第一定律:任何东西与别的东西之间都是相关的,但近处的东西比远处的东西相关性更强…

创建自己的脚手架(二)

创建自己的脚手架(二) 接着之前的功能继续开发 脚手架创建组件功能 pnpm add ejs 修改index.js中的文件内容 增加addcpn功能 #!/usr/bin/env node const { program } require("commander"); const { addComponentAction, createProjectAc…

mybatis 第一章 mybatis简介

1.mybatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 iBatis一词来源于“internet”和…

【智能算法】遗传算法原理及示例

目录:遗传算法一、流程图二、遗传编码三、适应度函数3.1 常见的适应度函数3.1.1 原始适应度函数3.1.2 标准适应度函数四、基本遗传操作4.1 选择操作4.1.1 比例选择4.1.2 轮盘赌选择4.2 交叉操作4.2.1 二进制交叉4.2.2 单点交叉4.2.3 两点交叉4.2.4 多点交叉4.3 变异…

Twitter被封号了?最详细的申诉教程在此

由于Twitter检测系统是十分敏感的,所以在运营的时候很容易莫名就出现“此账号被封禁”或者“此账号被冻结”的情况。出现这种情况大多是因为账号发送了垃圾信息、面临安全风险、发太多广告或者太久没上线被判为机器人这几个原因。被封号后,我们可以通过向…

Android DataStore Proto存储接入流程详解与使用

一、介绍 通过前面的文字,我们已掌握了DataStore 的存储,但是留下一个尾巴,那就是Proto的接入。 Proto是什么? Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数据通讯等场景&a…

【taichi】在Window10上从源码编译太极(用于AOT)

准备工作 Visual studio 2022 建议勾选以下几个: 建议取消中文语言包,只选英文的(因为中文有几率会出现BUG) 说明:C游戏开发是为了UE AOT用的。 vulkan也是UE AOT要用的。 vulkan貌似不需要显示安装,只…

使用docker-compose部署RocketMQ5.0

简介:使用docker-compose部署rocketmq5.0。文中会介绍docker-compose版本以及需要注意的项第一步:进入hub.docker.com搜索rocketmq我们选择第一个,因为第一个是7个月前更新的,(我看有很多博客使用的依旧是最下面的那种…

家政服务小程序实战教程14-立即预约功能开发

上一篇我们开发了客服功能,本篇我们开始开发预约功能。 1 创建数据源 功能开发之前先需要考虑数据源的规划问题,顾客预约某项服务时,需要告知上门时间、联系地址、联系电话,如果需要注明的事项,还需要标明备注。 先…

Vue 双向绑定原理

Vue2 双向绑定原理 mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来 劫持各个属性的 setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调。 几个要点: 1&#…