Что самый простой путь состоит в том, чтобы получить разрешение монитора (предпочтительно в кортеже)?
В Windows:
from win32api import GetSystemMetrics
print("Width =", GetSystemMetrics(0))
print("Height =", GetSystemMetrics(1))
Если вы работаете с экраном с высоким разрешением, убедитесь, что ваш интерпретатор Python имеет HIGHDPIAWARE.
На основе этого сообщения.
Если вы используете wxWindows, вы можете просто сделать:
import wx
app = wx.App(False) # the wx.App object must be created first.
print(wx.GetDisplaySize()) # returns a tuple
Используя Linux, самый простой способ - выполнить команду bash
xrandr | grep '*'
и разобрать ее вывод с помощью regexp.
Также это можно сделать через PyGame: http://www.daniweb.com/forums/thread54881.html
И для полноты картины Mac OS X
import AppKit
[(screen.frame().size.width, screen.frame().size.height)
for screen in AppKit.NSScreen.screens()]
предоставит вам список кортежей, содержащих все размеры экрана (при наличии нескольких мониторов)
В Windows вы также можете использовать ctypes с GetSystemMetrics ()
:
import ctypes
user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)
, так что вам не нужно устанавливать пакет pywin32; ему не нужно ничего, что не поставляется с самим Python.
Для настроек с несколькими мониторами вы можете получить общую ширину и высоту виртуального монитора:
import ctypes
user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(78), user32.GetSystemMetrics(79)