簡體   English   中英

在 python 中使用“適應屏幕”參數更改 macOS 背景圖片

[英]Change macOS background picture with "adapt to screen" parameter in python

我想在 macO 上使用 python 更改我的牆紙。 使用此代碼:

from appscript import app, mactypes
app('Finder').desktop_picture.set(mactypes.File(file_loc))

這工作正常,除了它總是將參數從“調整到屏幕”重置為“居中”。 我找不到任何關於如何添加“調整到屏幕”參數的信息。 謝謝你的幫助。

自從我玩 python 以來已經有一段時間了,但我想我拼湊了一些東西。 它使用PyObjC PyObjC 與最新的操作系統版本一起安裝,但如果您落后於一些修訂,您可能需要自己安裝它。 基本上,此腳本使用NSImageScaleProportionallyUpOrDown選項調用 NSWorkspace 的setDesktopImageURL:forScreen:options:error:方法,並將深灰色填充設置為邊框。

我不知道獲取imagePath的最佳方法 — 抱歉,我的 python已經生銹了,我使用了硬編碼值進行測試 — 但它應該是 POSIX 文件路徑。

from AppKit import NSWorkspace
from AppKit import NSScreen
from AppKit import NSColor

from AppKit import NSWorkspaceDesktopImageScalingKey
from AppKit import NSWorkspaceDesktopImageFillColorKey
from AppKit import NSImageScaleProportionallyUpOrDown

from Foundation import NSURL
from Foundation import NSDictionary

imageURL = NSURL.fileURLWithPath_(imagePath);
sharedSpace = NSWorkspace.sharedWorkspace();
mainScreen = NSScreen.mainScreen();
fillColor = NSColor.darkGrayColor();

optDict = NSDictionary.dictionaryWithObjects_forKeys_([NSImageScaleProportionallyUpOrDown, fillColor], [NSWorkspaceDesktopImageScalingKey,NSWorkspaceDesktopImageFillColorKey]);

sharedSpace.setDesktopImageURL_forScreen_options_error_(imageURL, mainScreen, optDict, None);

可用的縮放選項有:

  • NSImageScaleNone(不調整圖像大小)
  • NSImageScaleAxesIndependently(填滿屏幕,根據需要拉伸)
  • NSImageScaleProportionallyUpOrDown(在一個軸上調整屏幕,保持縱橫比)

如果你需要壁紙輔助顯示器,請參閱NSScreen ,如果你想填充不同的顏色(必須是預定義的 colors 之一,或使用 RGB 的自定義顏色),請參閱NSColor

如果您在進行這項工作時遇到困難,或有特殊顧慮(例如您需要將其運送到可能未安裝 PyObjC 的計算機),可以將這些相同的 NSWorkspace 調用寫入 AppleScript,然后可以使用 osascript 從 python 運行osascript 讓我知道這是一個更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM