Last active
October 25, 2021 17:06
-
-
Save snobu/a836254489a3b01b9e3b087592c30cea to your computer and use it in GitHub Desktop.
PySimpleGUI Thermostat example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import PySimpleGUI as sg | |
def read_temp1(): | |
return 24.0 | |
def read_temp2(): | |
return 21.1 | |
def set_temp1(temp): | |
print(f'Update Temp 1 to value {temp}') | |
def set_temp2(temp): | |
print(f'Update Temp 2 to value {temp}') | |
# Alege tema de culori | |
# Toate temele sunt cuprinse aici: | |
# https://media.geeksforgeeks.org/wp-content/uploads/20200511200254/f19.jpg | |
# doar alegi numele | |
sg.theme('DarkAmber') | |
temp1 = read_temp1() | |
temp2 = read_temp2() | |
# Marimea font-ului da marimea elementului grafic si e controlata cu proprietatea | |
# font="Nume_font MARIME" ca mai jos | |
sensor_readings = [11.8, 12.1, 13.1, 14.6, 15.4, 16, 17, 18.0, 19.4, 20.6] | |
column1 = [[ | |
sg.Text("Temp 1", size=(6,1), font="Helvetica 22", key="temp1_text"), | |
sg.Spin([x/10.0 for x in range(0, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp1, change_submits=True, pad=(20,20,20,20), key='temp1_spin') | |
], | |
[ | |
sg.Text("Temp 2", size=(6,1), font="Helvetica 22", key="temp2_text"), | |
sg.Spin([x/10.0 for x in range(5, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp2, change_submits=True, pad=(20,20,20,20), key='temp2_spin'), | |
]] | |
column2 = [[ | |
sg.Text("Temp 3", size=(6,1), font="Helvetica 22", key="temp3_text"), | |
sg.Spin([x/10.0 for x in range(0, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp1, change_submits=True, pad=(20,20,20,20), key='temp3_spin') | |
], | |
[ | |
sg.Text("Temp 4", size=(6,1), font="Helvetica 22", key="temp4_text"), | |
sg.Spin([x/10.0 for x in range(5, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp2, change_submits=True, pad=(20,20,20,20), key='temp4_spin'), | |
]] | |
column3 = [[ | |
sg.Text("Temp 5", size=(6,1), font="Helvetica 22", key="temp5_text"), | |
sg.Spin([x/10.0 for x in range(0, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp1, change_submits=True, pad=(20,20,20,20), key='temp5_spin') | |
], | |
[ | |
sg.Text("Temp 6", size=(6,1), font="Helvetica 22", key="temp6_text"), | |
sg.Spin([x/10.0 for x in range(5, 600)], font=('monospace 42'), size=(4,1), | |
initial_value=temp2, change_submits=True, pad=(20,20,20,20), key='temp6_spin'), | |
]] | |
layout = [ | |
[ | |
sg.Column(column1), | |
sg.Column(column2), | |
sg.Column(column3) | |
], | |
[ | |
sg.Table(values=[sensor_readings[0:5]], headings=['T1', 'T2', 'T3', 'T4', 'T5'], | |
max_col_width=25, | |
font=('monospace 24'), | |
auto_size_columns=False, | |
display_row_numbers=False, | |
justification='center', | |
num_rows=1, | |
alternating_row_color='darkblue', | |
key='table1', | |
row_height=35) | |
], | |
[ | |
sg.Table(values=[sensor_readings[5:10]], headings=['T6', 'T7', 'T8', 'T9', 'T10'], | |
max_col_width=25, | |
font=('monospace 24'), | |
auto_size_columns=False, | |
display_row_numbers=False, | |
justification='center', | |
num_rows=1, | |
alternating_row_color='darkblue', | |
key='table2', | |
row_height=35) | |
], | |
[ | |
sg.Button('Buton 1', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'black'), key='buton1'), | |
sg.Button('Buton 2', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'black'), key='buton2'), | |
sg.Button('Buton 3', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'firebrick3'), key='buton3'), | |
sg.Button('Buton 4', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'springgreen4'), key='buton4'), | |
sg.Button('Buton 5', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'springgreen4'), key='buton5'), | |
sg.Button('Buton 6', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'springgreen4'), key='buton6'), | |
sg.Button('Buton 7', pad=(10, 40, 0, 0), font='Helvetica 20', | |
button_color=('white', 'springgreen4'), key='buton7') | |
] | |
] | |
window = sg.Window("Termostat", layout, grab_anywhere=False) | |
# Event Loop | |
# Bucla asa se executa atata timp cat interfata grafica e pe ecran | |
while True: | |
event, values = window.read() | |
new_temp1 = values['temp1_spin'] | |
new_temp2 = values['temp2_spin'] | |
if temp1 != new_temp1: | |
window['temp1_spin'].update(new_temp1) | |
set_temp1(new_temp1) | |
if temp2 != new_temp2: | |
window['temp2_spin'].update(new_temp2) | |
set_temp2(new_temp2) | |
# Executia programului se opreste daca fereastra e inchisa | |
if event == sg.WIN_CLOSED: | |
break | |
print("Done.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment