[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