New Demo showing how to redraw figures on a Graph if the window resizes
This commit is contained in:
parent
99743b9347
commit
5722f1ab09
|
@ -0,0 +1,45 @@
|
|||
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()
|
Loading…
Reference in New Issue