[Python]Узнать доступные разрешения экрана.
Сабж. Как узнать в Питоне доступные для монитора разрешения экрана. Т.е. чтобы не предлагать юзеру, например на широкоформатном 16:9 монике разрешения с соотношениями 5:4, 4:3 и др. Актуально и под Линукс и под венду. Лучше без использования внешних библиотек, особенно больших (кроме PIL, PyOpenGL) (есть вариант через Tkinter узнать текущее разрешении и от него плясать, но таки не очень красиво, имхо)
rip86oz
18.07.11 11:25:08 MSK
Нахождение размеров экрана
Как узнать размеры экрана с помощью Python3 и PyQt5.
Отслеживать
73.1k 107 107 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков
задан 24 сен 2018 в 15:02
my diamonds dancing my diamonds dancing
603 4 4 серебряных знака 13 13 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вот несколько вариантов:
import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * class Window(QWidget): def __init__(self, *args, **kwargs): super(Window, self).__init__(*args, **kwargs) layout = QVBoxLayout(self) self.label = QLabel() layout.addWidget(self.label) layout.addWidget(QPushButton("Показать размер экрана", self, clicked=self.resizeWindow)) self.setLayout(layout) def resizeWindow(self): self.label.setText( "Получить ширину и высоту экрана: \n\n" "QApplication.desktop() - `<>`, `<>`\n" "".format( QApplication.desktop().width(), QApplication.desktop().height()) + "QApplication.instance().desktop() - `<>`, `<>`\n" "".format( QApplication.instance().desktop().width(), QApplication.instance().desktop().height()) + "QApplication.instance().desktop().availableGeometry() - `<>`, `<>`\n" "".format( QApplication.instance().desktop().availableGeometry().width(), QApplication.instance().desktop().availableGeometry().height()) + "app.desktop().screenGeometry() - `<>`, `<>`\n" "".format( app.desktop().screenGeometry().width(), app.desktop().screenGeometry().height()) + "app.desktop().availableGeometry() - `<>`, `<>`\n" "".format( app.desktop().availableGeometry().width(), app.desktop().availableGeometry().height()) + "QDesktopWidget().availableGeometry()) - `<>`, `<>`\n" "".format( QDesktopWidget().availableGeometry().width(), QDesktopWidget().availableGeometry().height()) + "QDesktopWidget().screenGeometry()) - `<>`, `<>`\n" "".format( QDesktopWidget().screenGeometry().width(), QDesktopWidget().screenGeometry().height()) ) if __name__ == '__main__': app = QApplication(sys.argv) ex = Window() ex.show() sys.exit(app.exec_())

Отслеживать
ответ дан 24 сен 2018 в 20:25
73.1k 107 107 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков
Как определить разрешение экрана?
Pygame и разрешение экрана
Доброго времени суток. У меня созрел вопрос: имеется ноутбук с разрешением экрана 1920 х 1080.
Как определить разрешение экрана
10,200,30,40 типа такое если такая картинку расширений чтобы знать как нарисовать картину
Как определить текущее разрешение экрана
Как определить текущее разрешение экрана?
Как програмно определить разрешение экрана ?
Как програмно определить разрешение экрана ?
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Смотря какой gui фреемворк рассматривать
Регистрация: 18.10.2016
Сообщений: 3
я пользуюсь библиотекой Tkinter
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597

Сообщение было отмечено gauka как решение
Решение
Сообщение от alex925 
tkinter это так, шлак.
Сообщение от alex925 
Но вместе с этим он ещё и безсполезный.
1 2 3 4 5 6
import Tkinter as tk root = tk.Tk() print root.winfo_screenwidth() print root.winfo_screenheight()
Регистрация: 18.10.2016
Сообщений: 3
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Сообщение было отмечено tezaurismosis как решение
Решение
Сообщение от gauka 
Есть какая-нибудь функция, которая возвращает разрешение экрана?
Системная — из WinAPI. Все остальные — просто обертки.
1 2 3 4
# нужен pypywin32 для python >3.3 или pywin32 для from win32api import GetSystemMetrics print("width =", GetSystemMetrics(0)) print("height =", GetSystemMetrics(1))
Встроенными средствами:
1 2 3
from ctypes import * print(windll.user32.GetSystemMetrics(0)) print(windll.user32.GetSystemMetrics(1))
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
Сообщение от Garry Galler 
Системная — из WinAPI.
а если не винда?
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
ilnurgi,
Вернулся на сайт, чтобы как раз добавить — что это относится только к windows. Но не успел :-).
Добавлено через 1 минуту
А если кроссплатформенно подходить — тогда наверно лучше брать соответ. функции из GUI фрейморков.
Добавлено через 27 минут
Если через PyQt5, то например так:
1 2 3 4 5 6
import sys from PyQt5.QtWidgets import QDesktopWidget,QApplication app = QApplication(sys.argv) q= QDesktopWidget().availableGeometry() print("width =", q.width()) print("height =", q.height())
Но здесь высота возвращается без панели задач.
1525 / 494 / 58
Регистрация: 10.04.2009
Сообщений: 8,361
странно в двух вариантах у меня показывает разное
1 2 3 4 5 6 7 8 9 10
from ctypes import * print(windll.user32.GetSystemMetrics(0)) print(windll.user32.GetSystemMetrics(1)) import sys from PyQt5.QtWidgets import QDesktopWidget,QApplication #pip install PyQt5 app = QApplication(sys.argv) q= QDesktopWidget().availableGeometry() print("width =", q.width()) print("height =", q.height())
1920
1080
width = 1920
height = 999
261 / 182 / 60
Регистрация: 18.09.2019
Сообщений: 357
Записей в блоге: 43
Ципихович Эндрю, можно ещё такое попробовать:
1 2 3
q= QDesktopWidget().geometry() print("width =", q.width()) print("height =", q.height())
1525 / 494 / 58
Регистрация: 10.04.2009
Сообщений: 8,361
Сообщение от iamvic 
q= QDesktopWidget().geometry()
print(«width =», q.width())
print(«height =», q.height())
width = 1920
height = 1080
а откуда взялось 999 ХЗ его знает.
261 / 182 / 60
Регистрация: 18.09.2019
Сообщений: 357
Записей в блоге: 43
Ципихович Эндрю, вот у меня нет виндов и подцеплено два монитора 1600×1200 (screen0) и 1280×1024 (screen1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import sys from PyQt5.QtWidgets import QDesktopWidget,QApplication app = QApplication(sys.argv) q= QDesktopWidget().availableGeometry() print("QDesktopWidget().availableGeometry()") print("width =", q.width()) print("height =", q.height()) print() q= QDesktopWidget().geometry() print("QDesktopWidget().geometry()") print("width =", q.width()) print("height =", q.height()) print() q= QDesktopWidget().screenGeometry() print("QDesktopWidget().screenGeometry()") print("width =", q.width()) print("height =", q.height())
Результаты такие:
1 2 3 4 5 6 7 8 9 10 11 12
user@linux:~> python3 example.py QDesktopWidget().availableGeometry() width = 1600 height = 1160 QDesktopWidget().geometry() width = 2880 height = 1200 QDesktopWidget().screenGeometry() width = 1600 height = 1200
Рыть глубоко пока недосуг. Видимо что-то под заголовок окна (. ) резервируется в первом случае? ХЗ, как говорится.
261 / 182 / 60
Регистрация: 18.09.2019
Сообщений: 357
Записей в блоге: 43
Что-то я был невнимателен Тут же выше написано
Сообщение от Garry Galler 
Если через PyQt5, то например так:
1 2 3 4 5 6
import sys from PyQt5.QtWidgets import QDesktopWidget,QApplication app = QApplication(sys.argv) q= QDesktopWidget().availableGeometry() print("width =", q.width()) print("height =", q.height())
Но здесь высота возвращается без панели задач.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Почему разрешение экрана планшета на 1280 x600 , а разрешение экрана проектора 854 x 480?
Привет всем, вчера я посмотрел такой плашет с проектором, разрешение экрана планшета на 1280 x600.
Как определить разрешение экрана в Access при помощи кода?
Буду признателен, если кто-то поможет в вопросе определения разрешения экрана из кода в Access, в.

Как получить масштаб элементов экрана или реальное разрешение экрана
Как получить разрешение экрана с учетом масштабирования, вот такой код и подобный ему дает неверный.
Как заменить разрешение экрана если его нету в параметрах экрана?
Я недавно установил Linux Mint 20, и схожу он ставит мне 1024×768 максимальным разрешением, хотя.

Как установить разрешение экрана 1440х900 если его нет в списке настроек экрана
По причине слабости компа скачал Виндовс 7 Реактор. Работает молниеносно, однако, есть весьма.
Определить разрешение экрана
Приветствую. Подскажите, как можно программно определить следующие моменты: 1. используемое.
Определить разрешение экрана
Всем привет! Я новичок в написании программ под линукс. У меня возникла такая проблема: пишу.
Как сделать смену разрешения экрана нормальной на python?
Пусть, я делаю приложение с учётом разрешения 1920х1080, пусть, я расставил все виджеты с учётом этого разрешения, но оказалось что у моего друга например которому я скидываю своё приложение разрешение экрана 1366х768. Как мне сделать программу так, чтобы при смене разрешения в настройках, виджеты не накладывались друг на друга, а расставлялись скажем так пропорционально оригиналу. Прошу пример с PyQt и Tkinter
Лучший ответ
h,w=tk.winfo_screenheight(self), tk.winfo_screenwidth(self) #размеры экрана
b=Button(tk)
b.place(x=.2*w,height=.5*h,anchor=’nw’) #кнопка высотой ровно в пол-экрана на расстояния 20% ширины экрана от края окна
