I am trying to build a user interface where users can enter values via a graphical interface. This works so far, but I would like to access these user inputs again afterwards. If possible, all questions (keys) and all answers (values) should be stored in a dict.
However, I can't get it to implement the storage of the key, values in a dict. In the following code I tried it with a for loop, but I didn't get the dict the way I want it.
import PySimpleGUI as sg
sg.theme('DarkTeal9')
layout = [
[sg.Text('Bitte füllen Sie alle Felder aus:')],
[sg.Text('Betrachtetes System:', size=(15,1)), sg.Combo(['HTWP ','KS '], key = 'System')],
[sg.Text('Zinsfaktor [bitte gleicher Zinsfaktor für HTWP & KS]:', size=(25,2)), sg.InputText(key='q')],
[sg.Text('Betrachtungszeitraum [bitte gleicher Betrachtungszeitraum für HTWP & KS]:', size=(25,3)), sg.InputText(key='T')],
[sg.Text('Preisänderungsfaktor Investition:', size=(25,1)), sg.InputText(key='r0')],
[sg.Text('Nutzungsdauer: ', size=(25,1)), sg.InputText(key='T_N')],
[sg.Text('Prozentsatz Förderung:', size=(25,1)), sg.InputText(key='F')],
[sg.Text('Wärmemenge Senke [kW]:', size=(25,1)), sg.InputText(key='Q_Senke')],
[sg.Text('COP:', size=(25,1)), sg.InputText(key='COP')],
[sg.Text('Elektrische Leistung [kW]:', size=(25,1)), sg.InputText(key='P_El')],
[sg.Text('Stromkosten [€/kWh]:', size=(25,1)), sg.InputText(key='S_Kosten')],
[sg.Text('Volllaststunden [h]:', size=(25,1)), sg.InputText(key='VLast_h')],
# Stromb_a
# Wärmeb_a
[sg.Text('Lohnkosten [€/h]:', size=(25,1)), sg.InputText(key='Lohn_h')],
[sg.Text('Anzahl Arbeitsstunden:', size=(25,1)), sg.InputText(key='Anz_Arbeits_h')],
[sg.Text('Preisänderungsfaktor Strom:', size=(25,1)), sg.InputText(key='r_v')],
[sg.Text('Preisänderungsfaktor Stundenlohn:', size=(25,1)), sg.InputText(key='r_b')],
[sg.Text('Faktor für den Aufwand bei der Wartung und Inspektion:', size=(25,2)), sg.InputText(key='f_w_insp')],
[sg.Text('Faktor für den Aufwand bei der Instandsetzung:', size=(25,2)), sg.InputText(key='f_inst ')],
[sg.Submit(),sg.Button('Clear'),sg.Exit()]
]
window = sg.Window('Definition Parameter',layout)
global HTWP_Daten
HTWP_Daten = {}
def clear_input():
for key in values:
window[key]('')
return None
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Exit':
break
if event == 'Clear':
clear_input()
if event == 'Submit':
# Create a Dict to save the Input for later
for key in values:
HTWP_Daten[key]= values
print(HTWP_Daten)
window.close()
Output:
{'System': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'q': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'T': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'r0': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'T_N': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'F': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'Q_Senke': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'COP': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'P_El': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'S_Kosten': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'VLast_h': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'Lohn_h': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'Anz_Arbeits_h': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'r_v': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'r_b': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'f_w_insp': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}, 'f_inst ': {'System': 'HTWP ', 'q': '12', 'T': '234', 'r0': '567', 'T_N': '43', 'F': '22', 'Q_Senke': '34', 'COP': '22', 'P_El': '11', 'S_Kosten': '33', 'VLast_h': '22', 'Lohn_h': '11', 'Anz_Arbeits_h': '33', 'r_v': '22', 'r_b': '11', 'f_w_insp': '22', 'f_inst ': '444'}}
CodePudding user response:
All the values for Combo/Input elements already stored in the dict values
.
import textwrap
import PySimpleGUI as sg
sg.theme('DarkTeal9')
questions = [
'Betrachtetes System:',
'Zinsfaktor [bitte gleicher Zinsfaktor für HTWP & KS]:',
'Betrachtungszeitraum [bitte gleicher Betrachtungszeitraum für HTWP & KS]:',
'Preisänderungsfaktor Investition:',
'Nutzungsdauer:',
'Prozentsatz Förderung:',
'Wärmemenge Senke [kW]:',
'COP:',
'Elektrische Leistung [kW]:',
'Stromkosten [€/kWh]:',
'Volllaststunden [h]:',
'Lohnkosten [€/h]:',
'Anzahl Arbeitsstunden:',
'Preisänderungsfaktor Strom:',
'Preisänderungsfaktor Stundenlohn:',
'Faktor für den Aufwand bei der Wartung und Inspektion:',
'Faktor für den Aufwand bei der Instandsetzung:',
]
width = 30
layout = [
[sg.Text('Bitte füllen Sie alle Felder aus:')]] [
[sg.Text('\n'.join(textwrap.wrap(key, width))), sg.Push(), (sg.Input(i, key=key) if i else sg.Combo(['HTWP ','KS '], default_value='HTWP', key=key))] for i, key in enumerate(questions)] [
[sg.Button(key) for key in ('Submit', 'Clear', 'Exit')],
]
window = sg.Window('Definition Parameter',layout)
def clear_input():
for key in values:
window[key]('')
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, 'Exit'):
break
if event == 'Clear':
clear_input()
if event == 'Submit':
for key, value in values.items():
print(f'{key}{value}')
window.close()
Betrachtetes System:HTWP
Zinsfaktor [bitte gleicher Zinsfaktor für HTWP & KS]:1
Betrachtungszeitraum [bitte gleicher Betrachtungszeitraum für HTWP & KS]:2
Preisänderungsfaktor Investition:3
Nutzungsdauer:4
Prozentsatz Förderung:5
Wärmemenge Senke [kW]:6
COP:7
Elektrische Leistung [kW]:8
Stromkosten [€/kWh]:9
Volllaststunden [h]:10
Lohnkosten [€/h]:11
Anzahl Arbeitsstunden:12
Preisänderungsfaktor Strom:13
Preisänderungsfaktor Stundenlohn:14
Faktor für den Aufwand bei der Wartung und Inspektion:15
Faktor für den Aufwand bei der Instandsetzung:16