MCPcopy Index your code
hub / github.com/PySimpleGUI/PySimpleGUI / main

Function main

DemoPrograms/Demo_Graph_Element.py:42–99  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

40
41
42def main():
43 global ping_url
44
45 STEP_SIZE = 1
46 SAMPLES = 100
47 CANVAS_SIZE = (1000, 500)
48 Y_MAX = 500
49 X_MAX = 500
50
51 sg.theme('Black')
52
53 layout = [
54 sg.vbottom(
55 [sg.Column([[sg.T('Ping in MS'), sg.T(k='-TIME-', s=4)],[sg.Slider((50, Y_MAX), default_value=Y_MAX, orientation='v', size=(20, 20), k='-Y SLIDER-', expand_y=True, enable_events=True)]], expand_y=True, element_justification='r'),
56 sg.Column([
57 [sg.Graph(CANVAS_SIZE, (0, 0), (SAMPLES, 200), background_color='black', key='-GRAPH-')],
58 [sg.Text('# Samples:'), sg.Slider((50, X_MAX), default_value=SAMPLES, orientation='h', size=(50, 20), k='-X SLIDER-', expand_x=True, enable_events=True)],
59 [sg.Text('Ping times to:'), sg.Input(ping_url, size=15, key='-URL-', readonly=not ping3, use_readonly_for_disable=True, disabled_readonly_text_color='black', disabled=not ping3), sg.B('Set', disabled=not ping3)],])],
60 expand_x=True, expand_y=True)
61 ]
62
63 window = sg.Window('Ping Graph', layout, background_color='black', finalize=True, font='_ 16')
64
65 graph = window['-GRAPH-']
66
67 i = prev_x = prev_y = 0
68 fig_list = []
69 window.start_thread(lambda : ping_thread(window))
70
71 while True:
72 event, values = window.read()
73 if event == 'Quit' or event == sg.WIN_CLOSED:
74 break
75 if event == '-THREAD-':
76 new_x, new_y = i, values[event]
77 window['-TIME-'].update(values[event])
78 if i >= SAMPLES:
79 graph.move(-STEP_SIZE, 0)
80 prev_x = prev_x - STEP_SIZE
81 fig = fig_list[0]
82 fig_list.pop(0)
83 graph.delete_figure(fig)
84 # gc.collect() # Run garbage collect. Uncomment if you want the space freed immediately
85 fig = graph.draw_line((prev_x, prev_y), (new_x, new_y), color='white')
86 fig_list.append(fig)
87 prev_x, prev_y = new_x, new_y
88 i += STEP_SIZE if i < SAMPLES else 0
89 if event == '-X SLIDER-' or event == '-Y SLIDER-':
90 graph.delete_figure(fig_list)
91 graph.change_coordinates((0,0), (values['-X SLIDER-'], values['-Y SLIDER-']))
92 graph.erase()
93 fig_list = []
94 i = 0
95 prev_x, prev_y = 0, 0
96 SAMPLES = values['-X SLIDER-']
97 if event == 'Set': # set a new URL to ping
98 ping_url = values['-URL-']
99 window.close()

Callers 1

Calls 10

start_threadMethod · 0.95
readMethod · 0.95
closeMethod · 0.95
delete_figureMethod · 0.80
draw_lineMethod · 0.80
change_coordinatesMethod · 0.80
eraseMethod · 0.80
ping_threadFunction · 0.70
updateMethod · 0.45
moveMethod · 0.45

Tested by

no test coverage detected