[Python-de] [wxPython] wie Werte an Controls zuweisen, auslesen
Diez B. Roggisch
deets at web.de
Don Apr 29 12:00:47 CEST 2004
> Wie kann ich alle definierten Namen von Controls aus einem *.xrc File
> bekommen? (zB. firm_name, firm_vorname, ... lt. obigem Beispiel)
keine Ahnung - kenne mich mit wx nicht aus3
> Wie kann ich in einer Schleife o.ä. die Zuweisung lt. obigem Bsp.
> vereinfachen?
zb so:
for name in ["firm_nummer", "firm_name", "firm_vorname"]:
setattr(self, name, wx.xrc.XRCCTRL(self.nb1pane1, name)
> 2. Zuweisen von Daten an Controls
> Wie geht das Zuweisen von Daten an die Controls eleganter?
> Bsp:
> for key in res:
> self.txtFirmNummer.SetValue(str(key["firm_nummer"]))
> self.txtFirmName.SetValue(key["firm_name"])
> self.txtFirmVorname.SetValue(key["firm_vorname"])
> (Die Daten stammen aus eine DB-Abfrage)
auch hier kannst du grundsaetzlich den setattr/getattr Kram machen, durch
gleiche Namen erhoeht sich dann die deklarativitaet:
for key, value in res.items():
for name in ["firm_nummer", "firm_name", "firm_vorname"]:
control = getattr(self, name)
control.SetValue(value)
Falls du auf typ-probleme stoesst, musst du da noch coercions einbauen, zb
durch sowas hier:
coercers = {'firm_nummer' : str}
Dann aendert sich die setvalue-Zeile so:
control.SetValue(coercers.get(name, lambda x: x)(value))
>
> 3. Auslesen von Daten der Controls
> Wie bekomme ich die Controls in einer Schleife ausgelesen, um geänderte
> Daten wieder in die DB zurück zuschreiben?
Letztlich wie oben beschrieben....
Diez