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()
|