我是Python的新手,当我制作一个程序时,我遇到了一个问题,那就是将我的背景改为国家地理日常图片。 它获得了JPEG的path很好,但是当我使用命令来改变桌面背景(对于windows),它只是将背景改为纯黑色。 代码本身不会抛出任何错误,它只是不工作如何伤口想要它。 这是代码。
import urllib2 import ctypes SPI_SETDESKWALLPAPER = 20 url = urllib2.urlopen("http://photography.nationalgeographic.com/photography/photo-of-the-day/") code = url.readlines() pos = code[1303].split(""",2) imgurl = pos[1] print imgurl ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,imgurl,0)
是否有可能以编程方式更改用户的屏幕保护程序和/或桌面背景?
如何根据windows版本设置壁纸风格(填充,拉伸)
检测多个显示器并为每个设置单独的壁纸
用Win API设置壁纸
在系统中为用户更换Python中的壁纸
您似乎将URL传递到设置的壁纸命令,而不是图像的路径。 首先获取图像。 试试这个,而不是。
import urllib2 import ctypes SPI_SETDESKWALLPAPER = 20 url = urllib2.urlopen("http://photography.nationalgeographic.com/photography/photo-of-the-day/") code = url.readlines() pos = code[1303].split(""",2) imgurl = pos[1] print imgurl # Changes after here url2 = urllib2.urlopen(imgurl) out = open("wallpaper.jpg","wb") out.write(url2.read()) out.close() ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,"wallpaper.jpg",0)
我没有真的试过(不在windows上运行),所以也许它会解决这个问题,也许不会!
PS这是真正脆弱的代码解析的网址,但得到它的工作的声誉!
你用来解析url的代码确实非常脆弱。 你会更好地使用正则表达式。 这个正则表达式搜索包含图像的独特的div,然后删除除url以外的所有东西。
此外,使用with打开文件更好,因为它会自动关闭文件。
改进的代码将是:
import urllib2 import ctypes import re SPI_SETDESKWALLPAPER = 20 url = urllib2.urlopen("http://photography.nationalgeographic.com/photography/photo-of-the-day/") code = url.read() imgurl = re.sub(r'(.|n)+?<div >(.|n)+?<img src="(.+?)"(.|n)+',r'3',code) print imgurl url2 = urllib2.urlopen(imgurl) with open("wallpaper.jpg","wb") as f: f.write(url2.read()) ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,0)
总结以上是内存溢出为你收集整理的墙壁换纸器工作不正常全部内容,希望文章能够帮你解决墙壁换纸器工作不正常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)