使用 Python 更改桌面背景

Posted

技术标签:

【中文标题】使用 Python 更改桌面背景【英文标题】:Changing desktop background with Python 【发布时间】:2015-12-15 14:40:17 【问题描述】:

我一直在尝试使用 Python 2.7 更改桌面背景:

SPI_SETDESKWALLPAPER = 20
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, pngName, 0)

(虽然 pngName 是图像的有效路径)

当我运行脚本时,没有任何变化,当我用不同的图像尝试它时,它工作得很好。

有什么建议吗?

附言 有人可以解释一下该脚本是如何工作的吗?我从某个地方拿来的,不太明白。

谢谢!

【问题讨论】:

【参考方案1】:

不要使用 png 文件(我相信你正在使用它们,因为图像路径的变量名称是 pngName),试试 jpg。 MS Windows 似乎不支持 png 作为背景图像格式(作为 Linux/Mac 用户,我无法自己确认,但请参阅discussion 了解更多详细信息)。

关于你的脚本是如何工作的,我可以简单地说它使用ctypes Python package,它允许你调用系统参数信息等dll/共享库中的函数。 SystemParametersInfo(见MSDN page) 检索/设置一些系统范围参数的值,包括设置桌面参数,如壁纸文件。有关更多见解,请参阅示例三 here。

【讨论】:

感谢您的回答。尝试使用 png 和 jpg 都没有运气。如果我打印: ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, pngName, 0) 我得到 0,这表示如果我没记错的话它找不到图像。然而,我三重检查并没有发现任何东西。还有什么建议吗?谢谢你的第二部分。非常有帮助 编辑:是否有可能因为图片是保存为 jpg 的绘画文件而发生?因为来自同一目录的原始照片确实有效。 @BenL 嗯,那么我建议遵循我上面提到的讨论(至少看看第一个答案)。有人报告说调整 jpg 的大小以匹配您的屏幕分辨率和 dpi 可以解决问题。 SystemParametersInfoA 返回布尔值,0 表示设置壁纸失败。要获得更具体的错误消息,您需要使用ctypes.GetLastError()(另请参阅MSDN)

以上是关于使用 Python 更改桌面背景的主要内容,如果未能解决你的问题,请参考以下文章

SLES - Gnome - 使用脚本更改桌面背景

如何使用python设置桌面背景[重复]

WinUI 3.0 桌面:文本框的背景颜色在鼠标悬停时更改

组策略 设置桌面背景

组策略 设置桌面背景

Win10 更改桌面背景为图片不生效,马上自动变为纯色黑色