Home > Enterprise >  PySimpleGUI: Store user inputs in dict (Python)
PySimpleGUI: Store user inputs in dict (Python)

Time:01-02

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

enter image description here

  • Related