How do I get monitor resolution in Python?

后端 未结 30 1090
深忆病人
深忆病人 2020-11-22 13:49

What is the simplest way to get monitor resolution (preferably in a tuple)?

相关标签:
30条回答
  • 2020-11-22 14:30

    On Windows:

    from win32api import GetSystemMetrics
    
    print("Width =", GetSystemMetrics(0))
    print("Height =", GetSystemMetrics(1))
    

    If you are working with high resolution screen, make sure your python interpreter is HIGHDPIAWARE.

    Based on this post.

    0 讨论(0)
  • 2020-11-22 14:31

    And for completeness, Mac OS X

    import AppKit
    [(screen.frame().size.width, screen.frame().size.height)
        for screen in AppKit.NSScreen.screens()]
    

    will give you a list of tuples containing all screen sizes (if multiple monitors present)

    0 讨论(0)
  • 2020-11-22 14:31

    Here is a quick little Python program that will display the information about your multi-monitor setup:

    import gtk
    
    window = gtk.Window()
    
    # the screen contains all monitors
    screen = window.get_screen()
    print "screen size: %d x %d" % (gtk.gdk.screen_width(),gtk.gdk.screen_height())
    
    # collect data about each monitor
    monitors = []
    nmons = screen.get_n_monitors()
    print "there are %d monitors" % nmons
    for m in range(nmons):
      mg = screen.get_monitor_geometry(m)
      print "monitor %d: %d x %d" % (m,mg.width,mg.height)
      monitors.append(mg)
    
    # current monitor
    curmon = screen.get_monitor_at_window(screen.get_active_window())
    x, y, width, height = monitors[curmon]
    print "monitor %d: %d x %d (current)" % (curmon,width,height)  
    

    Here's an example of its output:

    screen size: 5120 x 1200
    there are 3 monitors
    monitor 0: 1600 x 1200
    monitor 1: 1920 x 1200
    monitor 2: 1600 x 1200
    monitor 1: 1920 x 1200 (current)
    
    0 讨论(0)
  • 2020-11-22 14:31

    XWindows version:

    #!/usr/bin/python
    
    import Xlib
    import Xlib.display
    
    resolution = Xlib.display.Display().screen().root.get_geometry()
    print str(resolution.width) + "x" + str(resolution.height)
    
    0 讨论(0)
  • 2020-11-22 14:32

    Try the following code:

    import subprocess
    resuls = subprocess.Popen(['xrandr'],stdout=subprocess.PIPE).communicate()[0].split("current")[1].split(",")[0]
    width = resuls.split("x")[0].strip()
    heigth = resuls.split("x")[1].strip()
    print width + "x" + heigth
    
    0 讨论(0)
  • 2020-11-22 14:32

    If you are working on Windows OS, you can use OS module to get it:

    import os
    cmd = 'wmic desktopmonitor get screenheight, screenwidth'
    size_tuple = tuple(map(int,os.popen(cmd).read().split()[-2::]))
    

    It will return a tuple (Y,X) where Y is the vertical size and X is the horizontal size. This code works on Python 2 and Python 3

    0 讨论(0)
提交回复
热议问题