Как проще всего получить разрешение монитора (желательно кортежем)?
python
screen
resolution
rectangletangle
источник
источник
Tkinter
модулем это можно сделать так . Это часть стандартной библиотеки Python и работает на большинстве платформ Unix и Windows.Ответы:
В Windows:
Если вы работаете с экраном с высоким разрешением, убедитесь, что ваш интерпретатор Python имеет HIGHDPIAWARE.
На основе этого сообщения.
источник
highdpiaware
? Это было бы полезно включить в ответ.В Windows вы также можете использовать ctypes с
GetSystemMetrics()
:так что вам не нужно устанавливать пакет pywin32; ему не нужно ничего, что не поставляется с самим Python.
Для настроек с несколькими мониторами вы можете получить общую ширину и высоту виртуального монитора:
источник
GetSystemMetrics(78)
иGetSystemMetrics(79)
возвращается?Я создал модуль PyPI по этой причине:
Код:
Результат:
Он поддерживает среды с несколькими мониторами . Его цель - быть кроссплатформенной; на данный момент он поддерживает Cygwin и X11, но запросы на вытягивание полностью приветствуются.
источник
pip install cython pyobjus
), прежде чем я смогу использовать его на OSX,Если вы используете wxWindows, вы можете просто сделать:
источник
app = wx.App(False)
иначе вы получите сообщение «сначала необходимо создать объект wx.App». ошибка. 26 голосов и никто не проверял? Работает ли в Windows без привязки экземпляра wx к переменной?Взято непосредственно из ответа на этот пост: Как получить размер экрана в Tkinter?
источник
В Windows 8.1 я не получаю правильного разрешения ни от ctypes, ни от tk. У других людей такая же проблема для ctypes: getsystemmetrics возвращает неправильный размер экрана Чтобы получить правильное полное разрешение монитора с высоким разрешением в Windows 8.1, необходимо вызвать SetProcessDPIAware и использовать следующий код:
Полная информация ниже:
Я выяснил, что это потому, что окна сообщают о масштабированном разрешении. Похоже, что python по умолчанию является приложением, поддерживающим системное разрешение dpi. Типы поддерживающих DPI приложений перечислены здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx#dpi_and_the_desktop_scaling_factor
По сути, вместо того, чтобы отображать контент с полным разрешением монитора, что сделало бы шрифты крошечными, контент масштабируется до тех пор, пока шрифты не станут достаточно большими.
На моем мониторе я получаю:
Физическое разрешение: 2560 x 1440 (220
точек на дюйм) Заявленное разрешение Python: 1555 x 875 (158 точек на дюйм)
На этом сайте Windows: http://msdn.microsoft.com/en-us/library/aa770067%28v=vs.85%29.aspx Формула для эффективного разрешения системы, о котором сообщается, следующая: (report_px * current_dpi) / (96 dpi ) = physical_px
Я могу получить правильное полноэкранное разрешение и текущий DPI с помощью приведенного ниже кода. Обратите внимание, что я вызываю SetProcessDPIAware (), чтобы позволить программе увидеть реальное разрешение.
Что вернулось:
Я использую Windows 8.1 с монитором с разрешением 220 точек на дюйм. При масштабировании дисплея мой текущий DPI равен 158.
Я буду использовать 158, чтобы убедиться, что мои графики matplotlib имеют правильный размер: from pylab import rcParams rcParams ['figure.dpi'] = curr_dpi
источник
Tkinter
что используются правильные пиксели, но не учитывается масштабирование dpi, поэтому отображаются неправильные размеры в миллиметрах.ctypes.windll.shcore.SetProcessDpiAwareness(2)
возвращает ошибкуOSError: [WinError 126] The specified module could not be found
.И для полноты картины Mac OS X
предоставит вам список кортежей, содержащих все размеры экрана (при наличии нескольких мониторов)
источник
Если вы используете этот
Qt
инструментарий специальноPySide
, вы можете сделать следующее:источник
Используя Linux, самый простой способ - выполнить команду bash
и проанализируйте его вывод с помощью регулярного выражения.
Также вы можете сделать это через PyGame: http://www.daniweb.com/forums/thread54881.html
источник
Вот небольшая небольшая программа на Python, которая отобразит информацию о вашей настройке с несколькими мониторами:
Вот пример его вывода:
источник
gtk.Window()
получитьgdk_default_root_window
? Это как вы уверены, что.get_screen
содержит все мониторы?gtk.Window()
создает новое окно (см. Здесь ). Окно - это просто способget_screen
получить информацию о мониторе. Он возвращает экран, на котором окно открыто (или было бы, если бы оно когда-либо отображалось). Я предполагаю, что это зависит от конфигурации X, содержит ли этот «экран» все «мониторы». Это работает в моей системе с Twinview.Я использую метод get_screen_resolution в одном из моих проектов, подобных приведенному ниже, который в основном представляет собой цепочку импорта. Вы можете изменить это в соответствии с вашими потребностями, удалив те части, которые не нужны, и переместите более вероятные порты вверх по цепочке.
источник
Старый вопрос, но его нет. Я новичок в python, поэтому скажите, пожалуйста, "плохое" ли это решение. Это решение поддерживается только для Windows и MacOS и работает только для главного экрана, но ОС не упоминается в вопросе.
Измерьте размер, сделав снимок экрана. Поскольку размер экрана не должен меняться, это нужно делать только один раз. Есть более элегантные решения, если у вас установлен набор инструментов GUI, например GTK, wx, ...
см. Подушка
источник
Версия для XWindows:
источник
Расширяя ответ @ user2366975 , чтобы получить текущий размер экрана в многоэкранной настройке с использованием Tkinter (код в Python 2/3):
(Должен работать кросс-платформенный, протестирован только на Linux)
источник
Попробуйте следующий код:
источник
Если у вас установлен PyQt4, попробуйте следующий код:
Для PyQt5 будет работать следующее:
источник
Кроссплатформенный и простой способ сделать это - использовать TKinter, который поставляется почти со всеми версиями Python, поэтому вам не нужно ничего устанавливать:
источник
Использование Linux Вместо регулярного выражения возьмите первую строку и извлеките текущие значения разрешения.
Текущее разрешение дисплея: 0
Это было сделано на xrandr 1.3.5, я не знаю, отличается ли вывод в других версиях, но это должно упростить понимание.
источник
Чтобы получить бит на пиксель:
параметры в gdi32:
источник
Попробуйте pyautogui:
источник
Другая версия с использованием
xrandr
:источник
Использование pygame :
[1]
Однако, если вы пытаетесь настроить свое окно на размер экрана, вы можете просто сделать:
, чтобы перевести дисплей в полноэкранный режим. [2]
источник
Вы можете использовать PyMouse . Чтобы получить размер экрана, просто используйте
screen_size()
атрибут:a
вернет кортеж,(X, Y)
гдеX
- горизонтальное положение, аY
- вертикальное положение.Ссылка на функцию в документации.
источник
Если вы работаете в ОС Windows, вы можете использовать модуль ОС для его получения:
Он вернет кортеж (Y, X), где Y - размер по вертикали, а X - размер по горизонтали. Этот код работает на Python 2 и Python 3
источник
В Linux мы можем использовать модуль подпроцесса
источник
Это немного проблематично для экрана сетчатки, я использую tkinter, чтобы получить поддельный размер, использую pilllow grab, чтобы получить реальный размер:
источник
Для более поздних версий PyGtk:
источник
Для Linux вы можете использовать это:
источник
Утилита скрипт с использованием
pynput
библиотеки. Публикация здесь для исх .:источник