Looking for platform test help - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: General (https://python-forum.io/forum-1.html) +--- Forum: Code sharing (https://python-forum.io/forum-5.html) +--- Thread: Looking for platform test help (/thread-3899.html) Pages:
1
2
|
Looking for platform test help - Larz60+ - Jul-06-2017 Please, if willing, try this snippet on Linux and OS-X It works fine on windows (7) import screeninfo import re import sys """ GetScreenInfo() cross platform creates a dictionary with an entry for each monitor tied to users computer. the key is constructed as follows: monitor{n} n is sequentiallty assigned beginning with 1 Usage: GetScreenInfo(win_scale=.6, offset_scale=.1) where: scale is % of full screen, so default .6 = 60 % and offset is % of scaled width & height each entry contains a nested dictionary with four values: swidth = scaled_width sheight = scaled height hoffset = horizontal offset voffset = vertical offset4 example: >>> from GetScreenInfo import GetScreenInfo >>> gsi = GetScreenInfo(win_scale=.8, offset_scale=.2) >>> print(gsi.monitor_info) >>> {'monitor1': {'swidth': 1920, 'sheight': 1080, 'hoffset': 384, 'voffset': 216}} {'monitor1': {'swidth': 1920, 'sheight': 1080, 'hoffset': 384, 'voffset': 216}} Tested on Windows 7 with python 3.6 Needs testing on Linux and Apple """ class GetScreenInfo(): def __init__(self, win_scale=.6, offset_scale=.1): # use scale of 0 to return unmodified dimensions if win_scale == 0: newscale = 1 newoffset = 0 else: newscale = win_scale newoffset = offset_scale platform = sys.platform platform = platform.rstrip('1234567890') self.monitor_info = {} ostypes = { 'linux': 'x11', 'win': 'windows', 'cygwin': 'cygwin', 'darwin': 'osx' } # Following hack is for return proper linux value from sys.platform # prior to python 3.3 which always starts with 'linux' but may # be linux1, linux2 etc. if platform.startswith('linux'): montype = ostypes['linux'] mon = screeninfo.get_monitors(ostypes[platform]) for n, item in enumerate(mon): m = re.split(r'[()x+]', str(item)) mkey = 'monitor{}'.format(n+1) self.monitor_info[mkey] = {} self.monitor_info[mkey]['swidth'] = int(float(m[1]) * newscale) self.monitor_info[mkey]['sheight'] = int(float(m[2]) * newscale) self.monitor_info[mkey]['hoffset'] = int(self.monitor_info[mkey]['swidth'] * newoffset) self.monitor_info[mkey]['voffset'] = int(self.monitor_info[mkey]['sheight'] * newoffset) def main(scale, offset): gsi = GetScreenInfo(win_scale=scale, offset_scale=offset) print(gsi.monitor_info) if __name__ == '__main__': main(scale=.8, offset=.2)It should return a dictionary with an entry for each monitor attached on the target computer here's a single monitor output example: the values are scaled by scale and offset with the fp number representating % of full scale
RE: Looking for platform test help - buran - Jul-06-2017 Linux Mint 18.2 on my laptop and a TV connected via HDMI
RE: Looking for platform test help - metulburr - Jul-06-2017 same as buran. Ubuntu 16.04 with my monitor and TV hooked up via HDMI windows 10 with TV hooked up via HDMI to the same TV as linux windows 10 hooked up with TV via HDMI set as extended displays
RE: Looking for platform test help - Larz60+ - Jul-06-2017 Thanks all, anyone have OS-X ? Even if I don't get a test with OS-X, I will use this in my app, but would be nice to know. RE: Looking for platform test help - Larz60+ - Jul-06-2017 Turns out I already posted this before (not sure if there have been any changes since then) I didn't intend on doing this, it's a consequence of my brain doing what brains do after the age of 70. I'll merge together. RE: Looking for platform test help - wavic - Jul-06-2017 Arch linux - Kernel~4.11.7-1
RE: Looking for platform test help - sparkz_alot - Jul-06-2017 Is this correct? I would have expected a different output from each person/monitor. Are you all sharing the same monitor? btw, I haven't been able to try it yet. RE: Looking for platform test help - Larz60+ - Jul-06-2017 Hmm ... I see your point ... Monitors do tend to be a set of standard sizes. Can add a print statement after assignment of mon which will show the raw monitor size. RE: Looking for platform test help - wavic - Jul-06-2017 Display Server: X.Org 1.19.3 driver: intel Resolution: 1920x1080@59.91hz RE: Looking for platform test help - Larz60+ - Jul-06-2017 for wavic: 1920x1080 {'monitor1': {'swidth': 1536, 'sheight': 864, 'hoffset': 307, 'voffset': 172}} the width and height look ok, values for offset don't correspond to 20% but do correspond to 20 % of scaled sizes - this is not correct! the calculation fro offset should be on total size |