46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
import PySimpleGUI as sg
|
|
|
|
"""
|
|
Demo - Graph Element Rescale Figures When Window Resizes
|
|
|
|
This demo shows how you can redraw your Graph element's figures so that when
|
|
you resize the window, all of the figures on the graph resize.
|
|
|
|
There may be a tkinter method to help do this?
|
|
|
|
Copyright 2022 PySimpleGUI
|
|
"""
|
|
|
|
gsize = (400,400)
|
|
|
|
layout = [ [sg.Text('Rescaling a Graph Element When Window is Resized')],
|
|
[sg.Graph(gsize, (0,0),gsize, expand_x=True, expand_y=True, k='-G-', background_color='green')],
|
|
[sg.Button('Exit'), sg.Sizegrip()] ]
|
|
|
|
window = sg.Window('Graph Element Scale With Window', layout, finalize=True, resizable=True, enable_window_config_events=True)
|
|
|
|
graph = window['-G-'] #type: sg.Graph
|
|
|
|
orig_win_size = window.current_size_accurate()
|
|
# Draw the figure desired (will repeat this code later)
|
|
fig = window['-G-'].draw_circle((200, 200), 50, fill_color='blue')
|
|
|
|
while True:
|
|
event, values = window.read()
|
|
if event == sg.WIN_CLOSED or event == 'Exit':
|
|
break
|
|
if event == sg.WINDOW_CONFIG_EVENT: # if get a window resized event
|
|
# Determine how much the window was resized by and tell the Graph element the new size for the Canvas
|
|
new_size = window.current_size_accurate()
|
|
dx = orig_win_size[0]-new_size[0]
|
|
dy = orig_win_size[1]-new_size[1]
|
|
gsize = (gsize[0] - dx, gsize[1] - dy)
|
|
orig_win_size = new_size
|
|
graph.CanvasSize = gsize
|
|
# Erase entire Graph and redraw all figures0
|
|
graph.erase()
|
|
# Redraw your figures here
|
|
fig = window['-G-'].draw_circle((200, 200), 50, fill_color='blue')
|
|
|
|
window.close()
|