【发布时间】:2014-10-04 18:56:10
【问题描述】:
下面的python代码应该从网上下载一个BMP图像并将其保存到磁盘,然后将壁纸更改为下载的图像。壁纸更改应该是永久性的,即重新启动后不会恢复。这个函数是我使用 pyinstaller 编译成二进制 exe 的较大脚本的一部分。问题是,当我运行程序时,应该更改墙纸的位不起作用,而我正在努力找出原因。有趣的是,如果我在 python 解释器中运行这个确切的代码,它会按预期工作。此外,在先前版本的编译脚本中,壁纸更改工作顺利。任何 cmets、帮助、见解将不胜感激!
def wallpaper():
try:
os.chdir(launch_directory)
urllib.urlretrieve('http://www.imagehost.com/image.bmp', 'image.bmp')
ctypes.windll.user32.SystemParametersInfoA(20, 0, os.path.join(launch_directory, "image.bmp"), 1)
except:
pass
【问题讨论】:
-
您遇到异常了吗?您正在默默地传递它,可能值得输出任何可用的异常信息。检查 SystemParametersInfo 的返回类型。如果找不到图像,那会告诉你。它应该返回 TRUE。
-
尝试把
SystemParametersInfoA的最后一个参数改成2(SPIF_SENDCHANGE)