Seite 1 von 1
Mehrere Labels in Schleife ändern ?
Verfasst: Montag 5. Januar 2009, 12:56
von mepHy
for key in range(self.Anzahl):
for key2 in range(self.Anzahl):
if (int(self.GetItem(key2, 2).GetText()) == key):
self.LABELNAME.SetLabel(self.GetItem(key2, 1).GetText() +" "+ self.GetItem(key2, 0).GetText()[0]+"." )
Wie oben in meinem Quellcodebeispiel möchte ich mehrere Labels :
Label1
Label2
Label3
.....
in einer Schleife ändern.. wo derzeit LABELNAME steht.
habt ihr eine Idee wie das geht ?
Verfasst: Montag 5. Januar 2009, 13:29
von audax
Verfasst: Montag 5. Januar 2009, 13:30
von nemomuk
Benutze bitte die Code-Funktion, um den Code besser darzustellen.
Du könntest zB die Label-Objekte einer Liste hinzufügen und danach wieder über diese iterieren, um somit irgendwas damit zu machen. Da gibt es mehrere Möglichkeiten, je nach Einsatz...
Verfasst: Montag 5. Januar 2009, 13:33
von HWK
Code: Alles auswählen
for label in (self.label1, self.label2, self.label3):
label.SetLabel(...)
MfG
HWK
Verfasst: Montag 5. Januar 2009, 13:36
von martin101986
Hallo mepHy,
willkommen im Forum.
bitte poste in Zukunft mit welche Komponenten du von wxPython verwendest.
Am besten wäre etwas Code von dem was du bis jetzt hast.
Du verwendest nach der Methode GetItem zu beurteilen ein wxListCtrl.
Da ich nicht den genauen Aufbau deines Fensters kenne würde ich folgendes vorschlagen:
Code: Alles auswählen
self.labels = []
#zum erstellen der labels
for i in range(self.anzahl):
label = wx.StaticText(parent,id, label)
self.labels.append(label)
for key in range(self.anzahl):
if self.GetItem(key,2).GetId == key:
self.labels[key].SetLabel(self.GetItem(key2, 1).GetText() +" "+
self.GetItem(key2, 0).GetText()[0]+".")
Ich weiß nicht ob du von einer anderen Sprache kommst aber die Klammern bei der if Anweisung sind nicht nötig.
Grüße
Martin
Verfasst: Montag 5. Januar 2009, 15:34
von mepHy
Ahso, vielen Dank schonmal aber ein Problem habe ich noch... unzwar wurden von mir per hand schon 32 Labels erzeugt.
folgendes funtioniert nicht
Labels wurden alle so erstellt..
Code: Alles auswählen
self.labels1 = wx.StaticText (panel, -1, "Ihre auswahl" , (340, 110),(80,20), style = wx.ST_NO_AUTORESIZE)
self.labels2 = wx.StaticText (panel, -1, "Ihre auswahl" , (420, 130),(80,20), style = wx.ST_NO_AUTORESIZE)
Wenn ich die Liste jetzt selber anlege, erkennt er das wohl nicht an...
Code: Alles auswählen
self.labelliste= [labels1,labels2,labels3,labels4,labels5,labels6,labels7,labels8,labels9,labels10,labels11,labels12,labels13,labels14,labels15,labels16,labels17,labels18,labels19,labels20,labels21,labels22,labels23,labels24,labels25,labels26,labels27,labels28,labels29,labels30,labels31,labels32]
for key in range(self.Anzahl):
for key2 in range(self.Anzahl):
if (int(self.GetItem(key2, 2).GetText()) == key):
self.labelliste[key].SetLabel(self.GetItem(key2, 1).GetText() +" "+ self.GetItem(key2, 0).GetText()[0]+"." )
Verfasst: Montag 5. Januar 2009, 15:43
von mepHy
args, da mussja überall dieses self. hin :/ nun geht das =) dankööö
Verfasst: Montag 5. Januar 2009, 17:25
von mepHy
Meine letzte Herrausforderung für heute ist es meine Liste (ListCtrl) mit Pickle abzuspeichern. Ich habe sie folgendermaßen erstellt..
Code: Alles auswählen
self.Liste = wx.ListCtrl.__init__(self, panel, -1, (20,20), (240,400),
style=wx.LC_REPORT
| wx.BORDER_NONE)
Meine Idee war :
Code: Alles auswählen
def speichern(self,event):
output = open('data.pkl', 'wb')
pickle.dump(self.Liste, output)
output.close()
def laden(self,event):
inputs = open('data.pkl', 'rb')
self.Liste=pickle.load(inputs)
inputs.close()
Was allerdings nicht funktioniert ...

ich hoffe der Quellcode reicht, da ich schon weiter über 200 Zeilen bin und hiern icht alles Posten wollte ...
Verfasst: Montag 5. Januar 2009, 18:04
von Leonidas
Eine Fehlermeldung hättest du schon auch mitposten können. Aber davon abgesehen wird es wohl mit so komplexen Objekten nicht gehen. Also wirst du zum Speichern wohl die Daten aus dem Widget auslesen müssen und zum Laden diese in das Widget reinladen müssen.
Verfasst: Montag 5. Januar 2009, 18:07
von mepHy
Es kommt keine Fehlermeldung. Aber die Datei in dem Verzeichniss wo er es reinspeichern soll ist leer, wurde aber erstellt.