【问题标题】:Why does my desktop screen go black?为什么我的桌面屏幕变黑了?
【发布时间】:2016-12-07 12:37:34
【问题描述】:

我正在尝试将图像作为我的桌面图像。
我的图片路径:

#Image Path
import random,os
folder= r"C:\\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"
a=random.choice(os.listdir(folder))
print(a)

打开图片:

#Opening the Image
from PIL import Image
file = folder+'\\'+a
Image.open(file).show()

将图像作为我的桌面图像:

#Making the image as desktop image
import ctypes
image_path = file
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3)

现在问题是找到了图像路径,它也打开了一个图像。但是不是将打开的图像设置为桌面图像,它只是让我的桌面图像变黑。

【问题讨论】:

  • 很高兴您找到了答案 :)

标签: python image python-2.7 ctypes desktop


【解决方案1】:

这会成功的:

import random,os
import ctypes 

folder= r"C:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"
a=random.choice(os.listdir(folder)) 
print(a) file = folder+ '\\' +a
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER , 0, file, 3)

您的文件夹变量中有多个“\”

【讨论】:

  • 明白了,对不起。解释得更好?
  • 您的文件夹变量以“folder= r”C:\\Users" 开头。但应该是“folder= r”C:\Users"
  • 因此,在处理带有 \ 的路径时,Windows 或 Ctypes 都会出错。
  • @WhiteShadow 您使用双 \ 因此编译器不会将其视为转义字符,但如果您在字符串前面使用 r ,它会按字面意思将其视为转义字符,您的错误是你已经做了两者的混合
【解决方案2】:

这篇文章:SystemParametersInfo sets wallpaper completly black (using SPI_SETDESKWALLPAPER) 我想解释了这个问题。 似乎 Win32Api 是为 C 编写的,因此需要特定格式的字符串 - 以空字符结尾的字符数组。

不完全确定如何在 Python 中传递这样的数据,但希望这会为您指明正确的方向

【讨论】:

    【解决方案3】:

    不是它变黑了,而是你的背景变纯了。转到背景设置,将背景设置为黑色以外的纯色。然后,将背景更改为图片。现在,运行您的代码。您会看到问题在于它变为纯色,而不是黑色图像。

    【讨论】:

      【解决方案4】:

      下一个解决方案也可以提供帮助:

      import os
      import ctypes
      
      folder = r"C:\folder"
      file_name = r"back.jpg"
      
      full_path = os.path.join(folder, file_name)
      wallpaper = bytes(full_path, 'utf-8')
      
      ctypes.windll.user32.SystemParametersInfoA(20, 0, wallpaper, 3)
      

      【讨论】:

        猜你喜欢
        • 2020-03-19
        • 1970-01-01
        • 2020-07-11
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多