尝试编写一个从RSS源下载图像的python应用程序,并创建一个复合背景。如何在Mac OS X上获得当前的桌面分辨率(豹?)
答案 0 :(得分:13)
使用Pyobjc这样的事情应该有效。 Pyobjc附带Leopard。
from AppKit import NSScreen
print(NSScreen.mainScreen().frame())
有了这个,你也可以抓住宽度和高度。
NSScreen.mainScreen().frame().size.width
NSScreen.mainScreen().frame().size.height
例如:
print("Current screen resolution: %dx%d" % (NSScreen.mainScreen().frame().size.width, NSScreen.mainScreen().frame().size.height))
答案 1 :(得分:6)
如果您是从LaunchAgent脚本执行此操作,则可能需要下拉到CoreGraphics原语而不是AppKit级方法。今天正在处理此问题,我的装载了LaunchAgent的脚本从None
返回NSScreen.mainScreen()
,但如果我从会话中的终端加载它,则可以正常工作。
from Quartz import CGDisplayBounds
from Quartz import CGMainDisplayID
def screen_size():
mainMonitor = CGDisplayBounds(CGMainDisplayID())
return (mainMonitor.size.width, mainMonitor.size.height)
答案 2 :(得分:3)
像往常一样,使用绑定到操作系统的功能是一个非常糟糕的主意。 Python中有数百个可移植的库,可以让您访问这些信息。我想到的第一个当然是pygame:
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640,480), FULLSCREEN)
x, y = screen.get_size()
但是我猜可可做得很好,因此wxpython或qt是你的朋友。我想在Windows上你做了类似的事情:
from win32api import GetSystemMetrics
width = GetSystemMetrics [0]
height = GetSystemMetrics [1]
当然它更容易,但不适用于Mac,Linux,BSD,Solaris,也可能不适用于Windows版本。
答案 3 :(得分:1)
我很难让任何这个工作,所以我环顾四周,把一些似乎有用的东西放在一起。我对编码有点新意,请原谅任何错误。如果您有任何想法请评论。
results = str(subprocess.Popen(['system_profiler SPDisplaysDataType'],stdout=subprocess.PIPE, shell=True).communicate()[0])
res = re.search('Resolution: \d* x \d*', results).group(0).split(' ')
width, height = res[1], res[3]
return width, height