[Python-de] locale LC_NUMERIC Strategien
Andreas Kaiser
akaiser at vocote.de
Mit Dez 14 13:04:54 CET 2005
Hallo,
welche Strategien setzt ihr ein, um in floats aus dem Komma einen
Punkt zu machen und umgekehrt.
Folgendes Problem:
Eine Anwendung mit wxPython als GUI. Die GUI nimmt Werte über
Eingabefelder Werte entgegen. Die Eingabefelder geben aber immer einen
String zurück. Da es viele Eingabefelder sind, benutze ich zum
Auslesen der Werte eine Schleife, die über die Felder läuft. Somit
kann ich nur unterscheiden, ob ich ein TextCrtl auslese oder ob es
sich um eine CheckBox handelt. Innerhalb der TextCrtls kann ich [ich
habe jedenfalls noch keinen Weg gefunden :( ] kann ich dann nicht mehr
unterscheiden, ob hier ein String oder eine Zahl vorkommt:
<code>
self.ctrlProperties = {
'descr': self.txtDescr,
'dim1': self.txtDim1,
'dim2': self.txtDim2,
'dim34formula': self.chkDim34Formula}
data = {}
for key, value in self.ctrlProperties.iteritems():
#print key, value.GetValue(), type(value.GetValue())
if (isinstance(value.GetValue(), unicode)):
val = value.GetValue().encode('utf-8')
if (isinstance(value.GetValue(), bool)):
if value.GetValue() == True:
val = 1
else:
val = 0
data[key] = val
ret = self.bo.updateTool(data, self.toolId)
</code>
dim1 und dim2 sind float, descr ist String, dim34formula ist eine
Checkbox: also Integer.
Ich suche nun den Weg, die floats mit '.' als Dezimaltrenner zu
versorgen, damit sie richtig in eine DB geschrieben werden können.
Der Rückweg: DB float mit '.' ---> Anzeige in einem Textfeld mit ','
ist mir auch noch nicht ganz klar.
Eine einfache Lösung mit replace() gefällt mir nicht so richtig. Ich
würde hier gern mit der LC_NUMERIC Funktionalität (format) arbeiten.
Wie behandelt ihr solche Umwandlungen?
Gruß
Andreas