Eine Klasse für die GUI
Beispiel: Anhalteweg eines Autos
Die folgende grafische Benutzeroberfläche soll erstellt werden:
Im folgenden Programm wird ein Objekt components der Klasse Components erzeugt,
das sämtliche GUI-Objekte zur grafischen Benutzeroberfläche verwaltet. Die neue Klasse Components
wird vorab deklariert.
# -*- coding: iso-8859-1 -*-
import wx
class Components(object):
def __init__(self):
self.frame = wx.Frame(parent=None, title="Anhalteweg", size=(250, 260))
self.frame.SetBackgroundColour('WHITE')
self.stUeberschrift = wx.StaticText(parent=self.frame, id=-1, label="Anhalteweg eines Autos", size=(220, -1), style=wx.TE_CENTER)
self.stUeberschrift.SetBackgroundColour((192, 192, 192, 255))
self.stUeberschrift.SetPosition((10, 10))
self.stGeschwindigkeit = wx.StaticText(parent=self.frame, id=-1, label="Geschwindigkeit [in km/h]", size=(160, -1))
self.stGeschwindigkeit.SetBackgroundColour((196, 255, 196, 255))
self.stGeschwindigkeit.SetPosition((10, 40))
self.tfGeschwindigkeit = wx.TextCtrl(parent=self.frame, id=-1, size=(50, -1))
self.tfGeschwindigkeit.SetPosition((180, 36))
self.stGeschaetzterAnhalteweg = wx.StaticText(parent=self.frame, id=-1, label="geschaetzter Anhalteweg [in m]", size=(160, -1))
self.stGeschaetzterAnhalteweg.SetBackgroundColour((196, 255, 196, 255))
self.stGeschaetzterAnhalteweg.SetPosition((10, 70))
self.tfGeschaetzterAnhalteweg = wx.TextCtrl(parent=self.frame, id=-1, size=(50, -1))
self.tfGeschaetzterAnhalteweg.SetPosition((180, 66))
self.bBerechnen = wx.Button(parent=self.frame, id=-1, label="berechnen", size=(-1, -1))
self.bBerechnen.SetBackgroundColour((255, 255, 128, 255))
self.bBerechnen.SetPosition((50, 100))
self.bBerechnen.Bind(wx.EVT_BUTTON, self.on_bBerechnen_mouseClick)
self.stReaktionsweg = wx.StaticText(parent=self.frame, id=-1, label="Reaktionsweg [in m]", size=(160, -1))
self.stReaktionsweg.SetBackgroundColour((255, 179, 179, 255))
self.stReaktionsweg.SetPosition((10, 140))
self.tfWertReaktionsweg = wx.TextCtrl(parent=self.frame, id=-1, size=(50, -1))
self.tfWertReaktionsweg.SetPosition((180, 136))
self.stBremsweg = wx.StaticText(parent=self.frame, id=-1, label="Bremsweg [in m]", size=(160, -1))
self.stBremsweg.SetBackgroundColour((255, 179, 179, 255))
self.stBremsweg.SetPosition((10, 170))
self.tfWertBremsweg = wx.TextCtrl(parent=self.frame, id=-1, size=(50, -1))
self.tfWertBremsweg.SetPosition((180, 166))
self.stAnhalteweg = wx.StaticText(parent=self.frame, id=-1, label="Anhalteweg [in m]", size=(160, -1))
self.stAnhalteweg.SetBackgroundColour((255, 179, 179, 255))
self.stAnhalteweg.SetPosition((10, 200))
self.tfWertAnhalteweg = wx.TextCtrl(parent=self.frame, id=-1, size=(50, -1))
self.tfWertAnhalteweg.SetPosition((180, 196))
self.frame.Show()
def on_bBerechnen_mouseClick(self, event):
# Uebernahme der Daten
geschwindigkeit = float(self.tfGeschwindigkeit.GetValue())
# Verarbeitung der Daten
reaktionsweg = (geschwindigkeit/10)*3
bremsweg = (geschwindigkeit/10) * (geschwindigkeit/10)
anhalteweg = reaktionsweg + bremsweg
# Anzeige der Daten
anzeigeReaktionsweg = '%.2f'%(reaktionsweg)
self.tfWertReaktionsweg.SetLabel(anzeigeReaktionsweg)
anzeigeBremsweg = '%.2f'%(bremsweg)
self.tfWertBremsweg.SetLabel(anzeigeBremsweg)
anzeigeAnhalteweg = '%.2f'%(anhalteweg)
self.tfWertAnhalteweg.SetLabel(anzeigeAnhalteweg)
app = wx.App()
components = Components()
app.MainLoop()