2015-12-15 136 views
1

我一直特林改变使用Python 2.7的桌面背景:更改桌面背景与Python

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

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

当我运行该脚本什么更改,当我用不同的图像尝试它时,它工作得很好。

有什么建议吗?

p.s. 有人可以解释一下这个脚本是如何工作的吗?我从某个地方采取了它,并且不太明白它。

谢谢!

回答

1

而不是使用PNG文件(我相信你使用它们,所涉及的图像路径变量名是pngName),尽量JPG。看来MS Windows不支持PNG作为背景图像格式(作为Linux/Mac用户,我无法自己确认,但请参阅discussion了解更多详情)。

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

+0

我很感谢你的回答。尝试使用PNG和JPG没有运气。如果我打印: ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,0,pngName,0) 我得到0,这表明如果我没有弄错它找不到图像。但是我三重检查并没有发现任何东西。 有没有其他建议? 谢谢你的第二部分。非常有帮助 编辑:这是否有可能发生,因为图片是保存为jpg的绘图文件?因为来自同一个目录的原始照片确实有效。 –

+1

@BenL嗯,那么我会建议遵循我上面提到的讨论(至少看看第一个答案)。有些人报告称,调整jpg以匹配屏幕分辨率和dpi可解决问题。 SystemParametersInfoA返回布尔值,0表示无法设置墙纸。要获得更具体的错误消息,您需要使用[ctypes.GetLastError()](https://docs.python.org/2/library/ctypes.html)(另请参阅[MSDN](https:// msdn .microsoft.com/en-us/library/windows/desktop/ms679360%28v = vs.85%29.aspx)) – vrs

+0

改变了dpi和分辨率,它工作。谢谢! –