Seite 1 von 1

Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 18:15
von DMD
wie kann man in einer schleife einen listeneintrag (z.B. das nullte element liste[0] der liste = [0,1,2] mit beispw. einem datepicker)
immer wieder neu ersetze.
mein code zurzeit:

Code: Alles auswählen

text = '%02d' % text # durch klick in einem datepicker wird ein wochentag übergeben
list.insert(0, text)
if len(list) != '2':
     list[0] = text
print list 
ziel für print list ist, immer ausschließlich den aktuellsten wochentag als nulltes element zu haben.
das klappt bei mir noch nicht so richtig...

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 18:35
von Sirius3
@DMD: list ist ein äußert schlechter Variablenname, weil er den Datentyp list überschreibt. Danach solltest Du Dir nochmal die Grunddatentypen von Python anschauen. '2' ist keine Zahl.

Ganz generell, was willst mit Deiner Liste erreichen? Warum soll das 0. Element ersetzt werden? Warum dann überhaupt eine Liste? Was sind die anderen Elemente der Liste?

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 18:46
von DMD
jo, ich habs.

Code: Alles auswählen

text = '%02d' % text # durch klick in einem datepicker wird ein wochentag übergeben
list.insert(0, text)
if len(list) == 1:
list.insert(0, text)
else:
list[0]=text
print list
ich wollte es erst einmal zum laufen bekommen...:)
jetzt kommt der rest wie namen vergeben, usw

die liste bekommt den namen datum und sieht in der ausgabe so aus:

Code: Alles auswählen

['23', 'August 2015']
['10', 'August 2015']
['26', 'August 2015']
hier wird jetzt das nullte element immer wieder aktualisiert

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 18:49
von Sirius3
@DMD: Namen sind das erste, was man sich überlegen sollte. Ein guter Name zeigt, dass man das Problem verstanden hat. list ist kein guter Name und um es nochmal deutlicher zu sagen: Eine Liste ist der falsche Datentyp für Dein Problem.

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 18:55
von DMD
ich will es ja noch weiterverarbeiten...

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 19:06
von Sirius3
@DMD: in 99.9% der Fälle ist es sinnvoller, eine Liste erst dann zu erzeugen, wenn sie gebraucht wird und nicht eine Liste zu verändern. Zudem sollten alle Listenelemente gleich sein, also alle Einträge einen Tag entsprechen, Deine Liste enthält aber unterschiedliche Elemente (Tag und Monat) Das würde man mit einem Tuple lösen, oder da es sich um ein Datum handelt, mit dem Python-Datentyp datetime.date.

Re: Listeneintrag updaten

Verfasst: Dienstag 4. August 2015, 19:14
von noisefloor
Hallo,

der Code ist doch IMHO so wie so quatsch...

Code: Alles auswählen

 
text = '%02d' % text
list.insert(0, text)
# `text` steht jetzt _immer_ als erster Element der Liste
if len(list) == 1:
    list.insert(0, text)
    #wenn die Liste vor dem 1. `list.insert() leer war, dann steht `text` jetzt 2x in der Liste
    #als erstes und zweites Element
else:
    list[0]=text
    #`text` stand so wie so an erster Stelle und überschreibt sich einfach selber`
print list
Außerdem: Wenn du neue Einträge in eine Liste immer links einfügst, dann kannst du die genau so gut immer rechts einfügen. Gleiches Ergebnis, nur andersrum und ohne `inserts`.

Gruß, noisefloor

Re: Listeneintrag updaten

Verfasst: Mittwoch 5. August 2015, 02:53
von DMD
genau das will ich ja.
ich will durch klick immer nur das aktuell geklickte datum angezeigt bzw. übergeben bekommen,
damit ich dann das jeweilige datum mit weiteren daten z.B. einer banküberweisung oder so
abspeichern kann. so kann ich mehrere nacheinander einzelnd abspeichern. :)
datum auswählen, kohle eingeben und abspeichern,
datum auswählen, kohle eingeben und abspeichern, usw.

apropo: kann man auch in

Code: Alles auswählen

import Tkinter
import calendar
def test():
    import sys
    root = Tkinter.Tk()
    root.title('Ttk Calendar')
    ttkcal = Calendar(firstweekday=calendar.SUNDAY)
    ttkcal.pack(expand=1, fill='both')

    datum = ttkcal.selection  
    print 'Datum is: ', datum  

    if 'win' not in sys.platform:
        style = ttk.Style()
        style.theme_use('clam')
    root.mainloop()
if __name__ == '__main__':
    test()
eine feste größe für den kalender vorgeben?

Re: Listeneintrag updaten

Verfasst: Mittwoch 5. August 2015, 07:02
von noisefloor
Hallo,
datum auswählen, kohle eingeben und abspeichern,
Dann brauchst du doch gar keine Liste?! Das Datum ist einen Variablenname gebunden, die Kohle auch - reicht. Warum die Extrarunde mit der Liste?

Gruß, noisefloor

Re: Listeneintrag updaten

Verfasst: Mittwoch 5. August 2015, 16:36
von DMD
damit ich aus der liste eine tabelle erstellen kann

Re: Listeneintrag updaten

Verfasst: Mittwoch 5. August 2015, 16:58
von Sirius3
@DMD: was ist eine Tabelle? Konsequenterweise erzeugst Du beim Erstellen Deiner Tabellenzeile ein Tuple aus Tag und Monat, und nicht schon im vorhinein eine Liste, die vom logischen Standpunkt aus unsinnig ist.

Re: Listeneintrag updaten

Verfasst: Mittwoch 5. August 2015, 18:20
von noisefloor
Hallo,
DMD hat geschrieben:damit ich aus der liste eine tabelle erstellen kann
Eine 1-zeilige Tabelle? Wäre es zumindest nach dem Beispiel. Die kannst du auch "on the fly" erzeugen, wenn du die beiden Variablen an Tkinter oder ReportLab übergibst.

Ansonsten wäre es echt mal gut, wenn du nicht nur in Halbsätzen antworten würdest, sondern mal ausführlicher beschreibst, wo du hin willst. Gleiches gilt für die Codebeispiele.

Es mag ja sein, dass deine jetzigen Lösung das ausgibt, was du möchtest, aber es spricht viel dafür, dass der Weg dorthin code-technisch gruselig ist. Und ist unterstelle dir jetzt mal, dass du ein Eigeninteresse daran hast, deine Coding-Skills zu verbessern. Ergo: mehr Infos bitte, sonst wird das nichts.

Gruß, noisefloor