Как получить разрешение монитора в Python? - PullRequest
85 голосов
/ 28 июня 2010

Какой самый простой способ получить разрешение монитора (желательно в кортеже)?

Ответы [ 25 ]

0 голосов
/ 06 июля 2019

Расширение ответа @ user2366975 , чтобы получить текущий размер экрана в многоэкранной настройке с использованием Tkinter (код в Python 2/3):

try:
    # for Python 3
    import tkinter as tk
except ImportError:
    # for Python 2
    import Tkinter as tk


def get_curr_screen_geometry():
    """
    Workaround to get the size of the current screen in a multi-screen setup.

    Returns:
        geometry (str): The standard Tk geometry string.
            [width]x[height]+[left]+[top]
    """
    root = tk.Tk()
    root.update_idletasks()
    root.attributes('-fullscreen', True)
    root.state('iconic')
    geometry = root.winfo_geometry()
    root.destroy()
    return geometry

(Должно работать кроссплатформенно, протестировано только на Linux)

0 голосов
/ 28 мая 2019

Если вы работаете в ОС Windows, вы можете использовать модуль ОС для его получения:

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

Возвращается кортеж (Y, X) , где Y - это горизонтальный размер, а X - это вертикальный размер.Этот код работает на Python 2 и Python 3

0 голосов
/ 25 апреля 2019

Это немного хлопотно для экрана сетчатки, я использую tkinter, чтобы получить поддельный размер, используйте pilllow grab, чтобы получить реальный размер:

import tkinter
root = tkinter.Tk()
resolution_width = root.winfo_screenwidth()
resolution_height = root.winfo_screenheight()
image = ImageGrab.grab()
real_width, real_height = image.width, image.height
ratio_width = real_width / resolution_width
ratio_height = real_height/ resolution_height
0 голосов
/ 28 сентября 2018

В Linux мы можем использовать подпроцессный модуль

import subprocess
cmd = ['xrandr']
cmd2 = ['grep', '*']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
p2 = subprocess.Popen(cmd2, stdin=p.stdout, stdout=subprocess.PIPE)
p.stdout.close()

resolution_string, junk = p2.communicate()
resolution = resolution_string.split()[0]
resolution = resolution.decode("utf-8") 
width = int(resolution.split("x")[0].strip())
heigth = int(resolution.split("x")[1].strip())
0 голосов
/ 15 апреля 2018

Вы можете использовать PyMouse .Чтобы получить размер экрана, просто используйте атрибут screen_size():

from pymouse import PyMouse
m = PyMouse()
a = m.screen_size()

a вернет кортеж, (X, Y), где X - это горизонтальная позиция, а Y - вертикальная позиция..

Ссылка на функцию в документации.

...