2015-12-15 6 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/shared, таких как SystemParametersInfo. SystemParametersInfo (см. MSDN page) извлекает/устанавливает значения некоторых общесистемных параметров, включая параметры рабочего стола, такие как обои. См. Пример 3 here для получения дополнительной информации.

+0

Я ценю ваш ответ. Пробовал использовать png и jpg без везения. Если я напечатаю: ctypes.windll.user32.SystemParametersInfoA (SPI_SETDESKWALLPAPER, 0, pngName, 0) Я получаю 0, что указывает на то, что он не может найти изображение, если я не ошибаюсь. Однако я трижды проверил и ничего не нашел. Любое другое предложение? И спасибо вам за часть scond. Очень полезно Редактировать: Возможно ли, что это происходит, потому что изображение является файлом краски, сохраненным как jpg? потому что на самом деле работала оригинальная фотография из того же каталога. –

+1

@BenL хм, тогда я предлагаю следовать обсуждению, о котором я говорил выше (взгляните на первый ответ хотя бы). Некоторые люди сообщают, что изменение размера jpg в соответствии с разрешением экрана и разрешением dpi решает проблему. SystemParametersInfoA возвращает boolean, а 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 и разрешение, и это сработало. Благодаря! –

Смежные вопросы