()
| 40 | |
| 41 | |
| 42 | def 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() |
no test coverage detected