How To Get The Desktop Resolution In Mac Via Python?
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?"