PySimpleGUI/DemoPrograms/Demo_Bar_Chart.py

55 lines
1.7 KiB
Python

import PySimpleGUI as sg
import random
# Bars drawing in PySimpleGUI
#
# .--.
# | |
# .--.| |.--.
# | || || |
# | || || |
# | || || |
# .--.| || || |
# .--.| || || || |.--.
# | || || || || || |
# | || || || || || |
# .--.| || || || || || |.--.
# | || || || || || || || |.--.
# | || || || || || || || || |
# '--''--''--''--''--''--''--''--''--'
BAR_WIDTH = 50 # width of each bar
BAR_SPACING = 75 # space between each bar
EDGE_OFFSET = 3 # offset from the left edge for first bar
GRAPH_SIZE= DATA_SIZE = (500,500) # size in pixels
sg.theme('Light brown 1')
layout = [[sg.Text('Labelled Bar graphs using PySimpleGUI')],
[sg.Graph(GRAPH_SIZE, (0,0), DATA_SIZE, k='-GRAPH-')],
[sg.Button('OK'), sg.T('Click to display more data'), sg.Exit()]]
window = sg.Window('Bar Graph', layout, finalize=True)
graph = window['-GRAPH-'] # type: sg.Graph
while True:
graph.erase()
for i in range(7):
graph_value = random.randint(0, GRAPH_SIZE[1])
graph.draw_rectangle(top_left=(i * BAR_SPACING + EDGE_OFFSET, graph_value),
bottom_right=(i * BAR_SPACING + EDGE_OFFSET + BAR_WIDTH, 0),
fill_color=sg.theme_button_color()[1])
graph.draw_text(text=graph_value, location=(i*BAR_SPACING+EDGE_OFFSET+25, graph_value+10))
# Normally at the top of the loop, but because we're drawing the graph first, making it at the bottom
event, values = window.read()
if event in (sg.WIN_CLOSED, 'Exit'):
break
window.close()