Python :: Aufgabe #235 :: Lösung #2
3 Lösungen

#235
Funktionswerte einer Parabel berechnen - Windows Forms
Anfänger - Python
von paddlboot
- 04.12.2019 um 16:13 Uhr
#2

von Klaus (1960 Punkte)
- 24.02.2020 um 16:36 Uhr
Zur Implementierung der GUI habe ich PySimpleGUI genutzt. Basierend auf tkinter ist PySimpleGUI aus meiner Sicht eine einfache und pragmatische Lösung, um schnell eine grafische Benutzeroberfläche mit wenig Code zu kreieren.
Installation über
pip install pysimplegui
oder
conda install pysimplegui.
Alles weitere unter https://pysimplegui.readthedocs.io/en/latest/
Python-Code
Installation über
pip install pysimplegui
oder
conda install pysimplegui.
Alles weitere unter https://pysimplegui.readthedocs.io/en/latest/

import PySimpleGUI as sg class Parable: def __init__(self): sg.theme('Default1') sg.SetOptions(font=('Arial', 10), element_padding=(8, 8)) self.start = None self.stop = None self.step = None frame_layout = [ [sg.Text('Startwert', size=(10,1)), sg.InputText(key='_START_', size=(10,1), focus=True)], [sg.Text('Endwert', size = (10,1)), sg.InputText(key='_STOP_', size=(10,1))], [sg.Text('Schrittweite', size = (10,1)), sg.InputText(key='_STEP_', size=(10,1))]] col = [ [sg.Frame('X-Werte', frame_layout, font=('Arial', 8))], [sg.Button('Berechnen', size=(10,2),pad=(15,8), bind_return_key=True), sg.Button('Reset', size=(10,2), pad=(12,8))]] self.layout = [ [sg.Column(col), sg.Multiline('', key='_OUTPUT_', size=(30,12), font=('Consolas', 9))]] self.window = sg.Window('Funktionsweise einer Parabel berechnen (y = x*x)', self.layout) self.loop() def loop(self): while True: correct_input = True event, values = self.window.read() if event in (None, 'Cancel'): break if event == 'Berechnen': try: self.start = int(values['_START_']) except ValueError: sg.Popup('Bitte eine Ganzzahl als Startwert eingeben!', title='Hinweis', font=('Arial', 9)) self.window.FindElement('_START_').Update('') correct_input = False try: self.stop = int(values['_STOP_']) except ValueError: sg.Popup('Bitte eine Ganzzahl als Endwert eingeben!', title='Hinweis', font=('Arial', 9)) self.window.FindElement('_STOP_').Update('') correct_input = False try: self.step = int(values['_STEP_']) except ValueError: sg.Popup('Bitte eine Ganzzahl als Schrittweite eingeben!', title='Hinweis', font=('Arial', 9)) self.window.FindElement('_STEP_').Update('') correct_input = False if correct_input: if self.stop <= self.start: sg.Popup('Der Endwert muss größer als der Startwert sein!', title='Hinweis', font=('Arial', 9)) else: self.window.FindElement('_OUTPUT_').Update(self.calculate_values()) if event == 'Reset': elements = '_START_ _STOP_ _STEP_ _OUTPUT_'.split() for element in elements: self.window.FindElement(element).Update('') def calculate_values(self): return_value = 'Berechnete Werte\n----------------\n' for index in range(self.start, self.stop + 1, self.step): return_value += f'x: {index:7.1f} / y: {index ** 2:7.1f}\n' return return_value Parable()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1