New at Python programming - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: New at Python programming (/thread-6018.html) |
New at Python programming - rsmldmv - Nov-03-2017 I'm a VB.Net programmer by trade and am in process of learning Python. I'm messing around with the tkinter library for GUI development. One simple thing that I'm trying to figure out...and can't, is how to make a Window a specific size? Can someone suggest a good site for tkinter tutorials? Thanks in advance RE: New at Python programming - Larz60+ - Nov-03-2017 after you create the main window: 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 |