Как отметил Дэвид Хеффернан , вы можете использовать GetMonitorInfo
с pywin32
, чтобы получить размер монитора.В частности, рабочая область исключает размер панели задач.
Чтобы получить размер рабочей области (рабочий стол минус панель задач):
from win32api import GetMonitorInfo, MonitorFromPoint
monitor_info = GetMonitorInfo(MonitorFromPoint((0,0)))
work_area = monitor_info.get("Work")
print("The work area size is {}x{}.".format(work_area[2], work_area[3]))
Размер рабочей области 1366x728.
Чтобы получить высоту панели задач:
from win32api import GetMonitorInfo, MonitorFromPoint
monitor_info = GetMonitorInfo(MonitorFromPoint((0,0)))
monitor_area = monitor_info.get("Monitor")
work_area = monitor_info.get("Work")
print("The taskbar height is {}.".format(monitor_area[3]-work_area[3]))
Высота панели задач составляет 40.
Объяснение
Сначала нам нужно создать дескриптор, ссылающийся на основной монитор.Основной монитор всегда имеет свой левый верхний угол 0,0 , поэтому мы можем использовать:
primary_monitor = MonitorFromPoint((0,0))
Мы получаем информацию о мониторе с помощью GetMonitorInfo()
.
monitor_info = GetMonitorInfo(primary_monitor)
# {'Monitor': (0, 0, 1366, 768), 'Work': (0, 0, 1366, 728), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
Информация о мониторе возвращается как dict
.Первые две записи представляют размер монитора и размер рабочей области в виде кортежей (позиция x, позиция y, высота, ширина).
work_area = monitor_info.get("Work")
# (0, 0, 1366, 728)