69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
import time
|
|
import random
|
|
import PySimpleGUI as sg
|
|
|
|
|
|
STEP_SIZE=1
|
|
SAMPLES = 300
|
|
SAMPLE_MAX = 300
|
|
CANVAS_SIZE = (300,300)
|
|
|
|
|
|
def main():
|
|
global g_exit, g_response_time
|
|
|
|
with sg.FlexForm('Enter graph size') as form:
|
|
layout = [[sg.T('Enter width, height of graph')],
|
|
[sg.In(size=(6, 1)), sg.In(size=(6, 1))],
|
|
[sg.Ok(), sg.Cancel()]]
|
|
|
|
b,v = form.LayoutAndRead(layout)
|
|
if b is None or b == 'Cancel':
|
|
exit(69)
|
|
w, h = int(v[0]), int(v[1])
|
|
CANVAS_SIZE = (w,h)
|
|
|
|
# start ping measurement thread
|
|
|
|
sg.ChangeLookAndFeel('Black')
|
|
sg.SetOptions(element_padding=(0,0))
|
|
|
|
layout = [ [sg.Quit( button_color=('white','black'))],
|
|
[sg.Graph(CANVAS_SIZE, (0,0), (SAMPLES,SAMPLE_MAX),background_color='black', key='graph')],]
|
|
|
|
form = sg.FlexForm('Canvas test', grab_anywhere=True, background_color='black', no_titlebar=False, use_default_focus=False)
|
|
form.Layout(layout)
|
|
|
|
form.Finalize()
|
|
graph = form.FindElement('graph')
|
|
|
|
prev_response_time = None
|
|
i=0
|
|
prev_x, prev_y = 0, 0
|
|
graph_value = 250
|
|
while True:
|
|
# time.sleep(.2)
|
|
button, values = form.ReadNonBlocking()
|
|
if button == 'Quit' or values is None:
|
|
break
|
|
graph_offset = random.randint(-10, 10)
|
|
graph_value = graph_value + graph_offset
|
|
if graph_value > SAMPLE_MAX:
|
|
graph_value = SAMPLE_MAX
|
|
if graph_value < 0:
|
|
graph_value = 0
|
|
new_x, new_y = i, graph_value
|
|
prev_value = graph_value
|
|
if i >= SAMPLES:
|
|
graph.Move(-STEP_SIZE,0)
|
|
prev_x = prev_x - STEP_SIZE
|
|
graph.DrawLine((prev_x, prev_y), (new_x, new_y), color='white')
|
|
# form.FindElement('graph').DrawPoint((new_x, new_y), color='red')
|
|
prev_x, prev_y = new_x, new_y
|
|
i += STEP_SIZE if i < SAMPLES else 0
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
exit(69) |