after you create the main window:
if you are running on windows, the following class will get you screen sizes of all monitors
attached to your computer, and calculate window size based on percentage of full screen:
import tkinter as tk root = tk.Tk() # The set geometry root.geometry('600x400+10+10') root.mainloop()the string is 'widthxheight+xoffset+yoffset'
if you are running on windows, the following class will get you screen sizes of all monitors
attached to your computer, and calculate window size based on percentage of full screen:
import sys import screeninfo import re """ 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}} Needs testing on Apple OS-X Author: Larz60+ """ 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]) # print(f'mon: {mon}') 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(float(m[1]) * newoffset) self.monitor_info[mkey]['voffset'] = int(float(m[2]) * newoffset) def main(): gsi = GetScreenInfo(win_scale=.4, offset_scale=.2) print(gsi.monitor_info) if __name__ == '__main__': main()you will need the screeninfo package. you can get this with (from command line):
pip install screeninfo