Code: Alles auswählen
import wx
class MyFrame(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
# --------------------------------------------------------------------------------------------------
sampleList1 = ['Arbeit / Energie', 'Beschleunigung', 'Druck',
'Euro-Währung', 'Fläche', 'Geschwindigkeit',
'Kraft', 'Länge / Entfernung', 'Leistung', 'Masse',
'Speicherplatz (PC)', 'Temperatur', 'Volumen', 'Winkel',
'Zeit']
liste = []
### Controlls
# Text
topLbl = wx.StaticText(self, -1, "Unit Converter")
# Text layout
topLbl.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD))
topLbl.SetForegroundColour('orchid')
# Combo Box Units
self.cb_variable = wx.ComboBox(self, -1, 'Arbeit / Energie', (50, 90), (-1, -1),
sampleList1, wx.CB_READONLY)
self.cb_unit1 = wx.ComboBox(self, -1, "", (50, 90),
(250, -1), liste, wx.CB_READONLY|wx.CB_SORT)
self.cb_unit2 = wx.ComboBox(self, -1, "", (50, 90),
(250, -1), liste, wx.CB_READONLY|wx.CB_SORT)
# Eingabe Felder
self.einheit01 = wx.TextCtrl(self, size=(80, -1))
self.einheit02 = wx.TextCtrl(self, size=(80, -1))
# Button
okBtn = wx.Button(self, -1, "Ok")
# --------------------------------------------------------------------------------------------------
### Layout
# MainSizer
mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(topLbl, 0, wx.ALL, 5)
mainSizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
# Sizer for ComboBox, OkBtn
sizer = wx.GridBagSizer(hgap=5, vgap=5)
sizer.Add(self.cb_variable, pos=(0, 0), flag=wx.EXPAND)
sizer.Add(self.cb_unit1, pos=(1, 1), flag=wx.EXPAND)
sizer.Add(self.cb_unit2, pos=(2, 1), flag=wx.EXPAND)
sizer.Add(self.einheit01, pos=(1, 0))
sizer.Add(self.einheit02, pos=(2, 0))
sizer.Add(okBtn, pos=(3, 0))
mainSizer.Add(sizer, 0, wx.EXPAND|wx.ALL, 10)
self.SetSizer(mainSizer)
mainSizer.Fit(self)
mainSizer.SetSizeHints(self)
# --------------------------------------------------------------------------------------------------
# Evt Binding
self.Bind(wx.EVT_COMBOBOX, self.EvtComboBox, self.cb_variable)
self.Bind(wx.EVT_COMBOBOX, self.berechne, self.cb_unit1)
self.Bind(wx.EVT_COMBOBOX, self.berechne, self.cb_unit2)
self.Bind(wx.EVT_BUTTON, self.ausgabe, okBtn)
# --------------------------------------------------------------------------------------------------
# Funktionen
def EvtComboBox(self, evt):
if evt.GetString() == 'Arbeit / Energie':
self.cb_unit1.Clear()
self.cb_unit2.Clear()
liste = ['Joule [J]', 'Kilowattstunde [kW h]', 'Kalorie [cal]',
'Kilokalorie [kcal]', 'Tonne Steinkohleneinheiten [t SKE]',
'Erg [erg]', 'Elektronvolt [eV]']
for item in liste:
self.cb_unit1.Append(item)
self.cb_unit2.Append(item)
elif evt.GetString() == 'Beschleunigung':
self.cb_unit1.Clear()
self.cb_unit2.Clear()
liste = ['Meter pro Sekunde² [m/s²]', 'Erdanziehung [g]',
'Galileo [Gal]']
for item in liste:
self.cb_unit1.Append(item)
self.cb_unit2.Append(item)
# usw....
# Werte berechnen
def berechne(self, evt):
value_unit1 = self.einheit01.GetValue()
unit1 = self.cb_unit1.GetValue()
unit2 = self.cb_unit2.GetValue()
if unit1 == 'Sekunde [s]':
factor1 = float(2)
if unit2 == 'Minute [m]':
factor2 = float(60)
end_value = float(value_unit1) * factor1 / factor2
return end_value
def ausgabe(self, evt):
end_value = self.berechne(evt)
self.einheit02.AppendText(str(end_value))
Wenn ich einen factor auslasse, funktioniert alles...