Skip to content Skip to sidebar Skip to footer

How To Get The Desktop Resolution In Mac Via Python?

Trying to write a python application that downloads images from an RSS feed, and makes a composite background. How do I get the current desktop resolution on Mac OS X (leopard?)

Solution 1:

With Pyobjc something like this should work. Pyobjc comes with Leopard.

from AppKit import NSScreen
print(NSScreen.mainScreen().frame())

With that, you can also grab the width and height.

NSScreen.mainScreen().frame().size.width
NSScreen.mainScreen().frame().size.height

For example:

print("Current screen resolution: %dx%d" % (NSScreen.mainScreen().frame().size.width, NSScreen.mainScreen().frame().size.height))

Solution 2:

If you are doing this from a LaunchAgent script, you may need to drop down to CoreGraphics primitives rather than AppKit-level methods. Working on this today, my LaunchAgent-loaded script gets None back from NSScreen.mainScreen(), but works fine if I load it from a terminal in my session.

from Quartz import CGDisplayBounds
from Quartz import CGMainDisplayID

defscreen_size():
    mainMonitor = CGDisplayBounds(CGMainDisplayID())
    return (mainMonitor.size.width, mainMonitor.size.height) 

Solution 3:

As usual, using features that are binded to an OS is a very bad idea. There are hundred of portable libs in Python that give you access to that information. The first that comes to my mind is of course pygame :

import pygame
from pygame.localsimport *

pygame.init()
screen = pygame.display.set_mode((640,480), FULLSCREEN)
x, y = screen.get_size()

But I guess cocoa do just as good, and therefor wxpython or qt is your friend. I suppose on Windows you did something like this :

from win32api importGetSystemMetricswidth= GetSystemMetrics [0]
height = GetSystemMetrics [1]

Sure it's easier, but won't work on Mac, Linux, BSD, Solaris, and probably nor very later windows version.

Solution 4:

I was having a hard time getting any of this to work so I looked around and put something together that seems to work. I am kinda new at coding so please excuse any errors. If you have any thoughts please comment.

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

Post a Comment for "How To Get The Desktop Resolution In Mac Via Python?"