如何通过Python在Mac中获得桌面分辨率?

时间:2009-08-15 07:35:13

标签: python macos

尝试编写一个从RSS源下载图像的python应用程序,并创建一个复合背景。如何在Mac OS X上获得当前的桌面分辨率(豹?)

4 个答案:

答案 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