Hallo, ich lese aus einer Datei den Wert true oder false aus.
Wie kann ich nun eine Checkbox je nach ausgelesenem Wert checken oder eben den Hacken entfernen?
Vielen Dank
CheckBox aus einer funktion heraus checken
- Hobbes Hobson
- User
- Beiträge: 42
- Registriert: Sonntag 9. Dezember 2007, 15:24
- Wohnort: Bremen
Code: Alles auswählen
cb2 = wx.CheckBox(self, -1, "Oranges")#, (65, 60), (150, 20), wx.NO_BORDER)
cb2.SetValue(True)

Hallo, das habe ich so ähnlich versucht.
Hier mal mein code, ich benutze Boa Constrictor, der erste Teil ist also automatisch generiert worden
Hier die Funktion aus der ich die checkbox bearbeiten will.
Ich bekomme die Fehlermeldung
Hier mal mein code, ich benutze Boa Constrictor, der erste Teil ist also automatisch generiert worden
Code: Alles auswählen
self.cbEnergieversorgung = wx.CheckBox(id=wxID_FRAME1CBENERGIEVERSORGUNG,
label=u'Energieversorgung', name=u'cbEnergieversorgung',
parent=self, pos=wx.Point(24, 91), size=wx.Size(184, 22),
style=0)
self.cbEnergieversorgung.SetValue(False)
self.cbEnergieversorgung.Bind(wx.EVT_CHECKBOX,
self.OnCbEnergieversorgungCheckbox,
id=wxID_FRAME1CBENERGIEVERSORGUNG)
Hier die Funktion aus der ich die checkbox bearbeiten will.
Code: Alles auswählen
def ReadSettings(self):
home = os.path.expanduser("~")
if not os.path.exists(home+'/.OLED'):
os.chdir(home)
os.mkdir('.OLED')
print 'Verzeichnis angelegt'
if not os.path.exists(home+'/.OLED/settings.conf'):
datei = open(home+'/.OLED/settings.conf','w')
datei.write('datumuhrzeit=true\n')
datei.write('energieversorgung=true\n')
datei.write('akuzustand=true\n')
datei.write('cputemperatur=true\n')
datei.write('traffic=true\n')
datei.write('newmails=false\n')
datei.write('switch=15\n')
datei.write('resettraffic=19\n')
datei.close()
print 'Datei angelegt'
else:
datei = open(home+'/.OLED/settings.conf', 'r')
line = datei.readlines()
for i in range(len(line)):
line[i] = line[i].split("=")
datum=line[0][1]
energie=line[1][1]
akku=line[2][1]
cpu=line[3][1]
traffic=line[4][1]
mail=line[5][1]
switch=line[6][1]
reset=line[7][1]
datei.close()
print reset
self.cbEnergieversorgung.setValue(reset) #reset steht eben True oder False
Code: Alles auswählen
AttributeError: Checkbox has no attribute 'SetValue'
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ensacom!ensacom hat geschrieben:Code: Alles auswählen
self.cbEnergieversorgung.setValue(reset) #reset steht eben True oder False
Achte auf die Groß-/Kleinschreibung. Ein ``setValue`` gibt es nicht.
Nur die von dir gezeigte Fehlermeldung passt nicht dazu.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ok, das hat was gebracht. JEtzt ein neues Problem. Ich übergbe ja das True oder False per Variable deren Inhalt ich aus der datei auslese,
Jetzt bekomme ich folgende Fehlermeldung
Ich denke ich muss den String "True" in einen Boolschen Wert umwandeln.
Wie mache ich das?
Jetzt bekomme ich folgende Fehlermeldung
Code: Alles auswählen
True
Traceback (most recent call last):
File "/home/ensacom/Projekte/OLED/Frame1.py", line 124, in OnCbDatumCheckbox
self.ReadSettings()
File "/home/ensacom/Projekte/OLED/Frame1.py", line 194, in ReadSettings
self.cbEnergieversorgung.SetValue(energie)
File "/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_controls.py", line 384, in SetValue
return _controls_.CheckBox_SetValue(*args, **kwargs)
TypeError: in method 'CheckBox_SetValue', expected argument 2 of type 'bool'
Wie mache ich das?
Code: Alles auswählen
In [101]: s = 'True'
In [102]: s == 'True'
Out[102]: True
In [103]: s = 'Irgendwas'
In [104]: s == 'True'
Out[104]: False
Nimms mir bitte nicht übel aber ich weiß gerade nicht was du mir damit sagen willst.
Wenn Du das meinst, das funktioniert auch nicht. Es wird True ausgegeben aber trotzdem wird es nicht markiert
Wenn Du das meinst, das funktioniert auch nicht. Es wird True ausgegeben aber trotzdem wird es nicht markiert
Code: Alles auswählen
print energie
if energie == 'True':
self.cbEnergieversorgung.SetValue(True)
else:
self.cbEnergieversorgung.SetValue(False)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ensacom!ensacom hat geschrieben:Es wird True ausgegeben aber trotzdem wird es nicht markiertCode: Alles auswählen
print energie if energie == 'True': self.cbEnergieversorgung.SetValue(True) else: self.cbEnergieversorgung.SetValue(False)
Ändere deinen Code so um:
Code: Alles auswählen
print repr(energie)
if energie == 'True':
self.cbEnergieversorgung.SetValue(True)
print "TRUE gesetzt"
else:
self.cbEnergieversorgung.SetValue(False)
print "FALSE gesetzt"
self.cbEnergieversorgung.Refresh()

mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Vielen Dank.
Ich glaube ich habe durch dein Beispiel nun auch den Fehler gefunden.
Hinter dem True steht noch ein \n.
Muss ich das also erst mal entfernen.
Ich glaube ich habe durch dein Beispiel nun auch den Fehler gefunden.
Hinter dem True steht noch ein \n.
Muss ich das also erst mal entfernen.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ensacom!ensacom hat geschrieben:Hinter dem True steht noch ein \n.
Und das funktioniert so: ``energie.rstrip()``.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ja ich habe es so gemacht
anstat
Ist das so in Ordnung?
Code: Alles auswählen
datum=string.strip(line[0][1], '\n')
Code: Alles auswählen
datum=line[0][1]
@ensacom: Damit habe ich Dir gezeigt, wie man aus der Zeichenkette 'True' einen entsprechenden Wahrheitswert bekommt. Deutlicher als es an einem praktischen Beispiel zu demonstrieren geht's doch nun wirklich nicht mehr. 
Das ``if``/``else`` kann man sich dann auch sparen:
Funktionen aus `string`, die es auch als Methoden auf Zeichenketten gibt, sollte man nicht mehr verwenden.

Das ``if``/``else`` kann man sich dann auch sparen:
Code: Alles auswählen
self.cbEnergieversorgung.SetValue(energie == 'True')