Seite 1 von 1

Tabelle mit Entry anstall Label

Verfasst: Mittwoch 16. September 2015, 17:11
von DMD
hi
ich habe folgenden code, würde aber gern aus dem untersten LABEL ein ENTRY machen, das eben auch die gegebenen werte anzeigen soll.

Code: Alles auswählen

from Tkinter import *

def auswahlUebersicht():

    rootWin4 = Tk()
    rootWin4.title('GUI-VERWALTUNG')
    rootWin4.geometry('+800+200')

    liste = []

    probeListe = []
    monat = '16.09.2015'
    nummer = 0
    name = 'Hubertus Mustermann'
    gebdat = '01.01.2111'
    wohnort = '12345 Zukunft'
    erstePause = 'Hi,'
    zweitePause = 'wie'
    istSum = 8.75
    sollSum = 9
    ueberSum = (istSum - sollSum)
    probeListe.append(monat)
    probeListe.append(istSum)
    probeListe.append(sollSum)
    probeListe.append(ueberSum)
    liste.append(probeListe)

    for row, items in enumerate(liste):
        for column, item in enumerate(items):
            label_0 = Label(rootWin4, text=("' Ausgabeliste '"),font=('Arial', 12, 'bold underline'), height=3, width=20, fg="#000000000", justify='left')
            label_0.grid(row=0, column=0, columnspan=2)
            label_1 = Label(rootWin4, text=(monat), font=('Arial', 12, 'bold underline'), height=1, width=20, fg="#000000000", justify='center')
            label_1.grid(row=1, column=0, columnspan=2)
            label_2 = Label(rootWin4, height=3,width=20, fg="#000000000", justify='center')
            label_2.grid(row=2, column=0)
            label_3 = Label(rootWin4,text=('Kontonummer:'),font=('Arial', 9, 'bold'), height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_3.grid(row=3, column=0)
            label_4 = Label(rootWin4,text=(nummer),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove",   fg="#000000000", justify='center')
            label_4.grid(row=3, column=1)
            label_5 = Label(rootWin4,text=('Name:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_5.grid(row=4, column=0)
            label_6 = Label(rootWin4,text=(name),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_6.grid(row=4, column=1)
            label_7 = Label(rootWin4,text=('Geburtsdatum:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_7.grid(row=5, column=0)
            label_8 = Label(rootWin4,text=(gebdat),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_8.grid(row=5, column=1)
            label_9 = Label(rootWin4,text=('Wohnort:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_9.grid(row=6, column=0)
            label_10 = Label(rootWin4,text=(wohnort),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_10.grid(row=6, column=1)
            label_11 = Label(rootWin4, height=2,width=20, fg="#000000000", justify='center')
            label_11.grid(row=7, column=0)
            label_12 = Label(rootWin4,text=('Datum'),font=('Arial', 9, 'bold'),height=1,width=20, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_12.grid(row=8, column=0)
            label_13 = Label(rootWin4,text=('A'),font=('Arial', 9, 'bold'),height=1,width=20, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_13.grid(row=8, column=1)
            label_14 = Label(rootWin4,text=('B'),font=('Arial', 9, 'bold'),height=1,width=20, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_14.grid(row=8, column=2)
            label_15 = Label(rootWin4,text=('C'),font=('Arial', 9, 'bold'),height=1,width=20, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_15.grid(row=8, column=3)

            print item
            #LABEL = Label(rootWin4, text=item, width=20, relief="sunken",  bg='#eeeee0', fg="#000000000", justify='center').grid(column=column, row=row+9)
            ENTRY = Entry(rootWin4, text=item, width=20, relief="sunken",  bg='#eeeee0', fg="#000000000", justify='center').grid(column=column, row=row+9)

    rootWin4.mainloop()

auswahlUebersicht()
damit ich nach der ausgabe dann die werte des untersten ENTRY ändern und geändert weiterverarbeiten kann.
hat jemand ne idee?

Re: Tabelle mit Entry anstall Label

Verfasst: Mittwoch 16. September 2015, 17:40
von BlackJack
@DMD: Eine Idee wozu? Die Ideen die ich habe sind: Sternchen-Import weg. Die ganzen Wiederholungen von Daten in den `Label`-Erzeugungen in ein Wörterbuch herausziehen und das mit der ``**``-Syntax beim Aufruf übergeben. Und dann sollte man vielleicht nicht den Wert `None` an `ENTRY` binden sondern besser das `Entry`-Widget. Die durchnummerierten `label_*` sind auch äusserst unschön. Ebenso wie `rootWin4` — was soll die 4 da? Und die Schreibweise von so einigen Namen und Quelltextformatierung hält sich nicht an den Style Guide for Python Code. Ausserdem sind einige Werte völlig sinnfrei in Klammern gesetzt.

Re: Tabelle mit Entry anstall Label

Verfasst: Mittwoch 16. September 2015, 17:46
von DMD
ich hab das schnell erstellt,
weil ich gern die syntax für das entry hätte,
anstatt text=item wie bei einem label,
würde ich dem entry gern sagen,
dass es die werte für item anzeigen soll.
z.B. anstatt , "text=item" hab ich schon
"textvariable.get(item)" und
text = textvariable.get(item) ausprobiert.
nix funktioniert :(

Re: Tabelle mit Entry anstall Label

Verfasst: Mittwoch 16. September 2015, 18:08
von Sirius3
Und jetzt soll Dir jemand die Tk-Dokumentation vorlesen?

Re: Tabelle mit Entry anstall Label

Verfasst: Mittwoch 16. September 2015, 18:09
von DMD
ne, ich habs schon

Code: Alles auswählen

v = StringVar()
v.set(item)
ENTRY = Entry(rootWin4, textvariable = v, width=26, relief="sunken",  bg='#eeeee0', fg="#000000000", justify='center').grid(column=column, row=row+9)
trotzdem danke.
deine einwände arbeite ich jetzt ab :)

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 15:18
von DMD
hallo,
ich bräuchte da nocheinmal hilfe.
ich möchte bei meinem probecode gern
mit klick auf aktuasisieren die werte für v auslesen.
leider gelingt es mir nur, den letzten wert für v 4x auszugeben:

Code: Alles auswählen

from Tkinter import *

def auswahlUebersicht():

    rootWin1 = Tk()
    rootWin1.title('GUI-VERWALTUNG')
    rootWin1.geometry('+800+200')

    liste = []
    probeListe = []
    monat = '16.09.2015'
    nummer = 0
    name = 'Hubertus Mustermann'
    gebdat = '01.01.2111'
    wohnort = '12345 Zukunft'
    erstePause = 'Hi,'
    zweitePause = 'wie'
    istSum = 8.75
    sollSum = 9
    ueberSum = (istSum - sollSum)
    probeListe.append(monat)
    probeListe.append(istSum)
    probeListe.append(sollSum)
    probeListe.append(ueberSum)
    liste.append(probeListe)

    for row, items in enumerate(liste):
        for column, item in enumerate(items):
            label_0 = Label(rootWin1, text=("' Ausgabeliste '"),font=('Arial', 12, 'bold underline'), height=3, width=20, fg="#000000000", justify='left')
            label_0.grid(row=0, column=0, columnspan=2)
            label_1 = Label(rootWin1, text=(monat), font=('Arial', 12, 'bold underline'), height=1, width=20, fg="#000000000", justify='center')
            label_1.grid(row=1, column=0, columnspan=2)
            label_2 = Label(rootWin1, height=3,width=20, fg="#000000000", justify='center')
            label_2.grid(row=2, column=0)
            label_3 = Label(rootWin1,text=('Kontonummer:'),font=('Arial', 9, 'bold'), height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_3.grid(row=3, column=0)
            label_4 = Label(rootWin1,text=(nummer),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove",   fg="#000000000", justify='center')
            label_4.grid(row=3, column=1)
            label_5 = Label(rootWin1,text=('Name:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_5.grid(row=4, column=0)
            label_6 = Label(rootWin1,text=(name),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_6.grid(row=4, column=1)
            label_7 = Label(rootWin1,text=('Geburtsdatum:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_7.grid(row=5, column=0)
            label_8 = Label(rootWin1,text=(gebdat),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_8.grid(row=5, column=1)
            label_9 = Label(rootWin1,text=('Wohnort:'),font=('Arial', 9, 'bold'), height=1,width=20,relief="groove",  fg="#000000000", justify='center')
            label_9.grid(row=6, column=0)
            label_10 = Label(rootWin1,text=(wohnort),font=('Arial', 9, 'bold'),height=1,width=20, relief="groove", fg="#000000000", justify='center')
            label_10.grid(row=6, column=1)
            label_11 = Label(rootWin1, height=2,width=20, fg="#000000000", justify='center')
            label_11.grid(row=7, column=0)
            label_12 = Label(rootWin1,text=('Datum'),font=('Arial', 9, 'bold'),height=1,width=22, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_12.grid(row=8, column=0)
            label_13 = Label(rootWin1,text=('A'),font=('Arial', 9, 'bold'),height=1,width=22, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_13.grid(row=8, column=1)
            label_14 = Label(rootWin1,text=('B'),font=('Arial', 9, 'bold'),height=1,width=22, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_14.grid(row=8, column=2)
            label_15 = Label(rootWin1,text=('C'),font=('Arial', 9, 'bold'),height=1,width=22, relief="ridge",  bg="#ddddddddd", fg="#000000000", justify='center')
            label_15.grid(row=8, column=3)

            v = StringVar()
            v.set(item)
            entry_1 = Entry(rootWin1, textvariable = v, width=22, relief="sunken",  bg='#eeeee0', fg="#000000000", justify='center').grid(column=column, row=row+9)

            label_16=Label(rootWin1, text=('Summe:'), width=22, relief="ridge", font=('Arial', 8, 'bold'), bg='#cdc8b1', fg="#000000000", justify='center').grid(column=0, row=row+10)
            label_17=Label(rootWin1, text=(istSum), width=22, relief="ridge",font=('Arial', 8, 'bold'),  bg='#cdc8b1', fg="#000000000", justify='center').grid(column=1, row=row+10)
            label_18=Label(rootWin1, text=(sollSum), width=22, relief="ridge",font=('Arial', 8, 'bold'),  bg='#cdc8b1', fg="#000000000", justify='center').grid(column=2, row=row+10)
            label_19=Label(rootWin1, text=(ueberSum), width=22, relief="ridge",font=('Arial', 8, 'bold'),  bg='#cdc8b1', fg="#000000000", justify='center').grid(column=3, row=row+10)

            def aktuaLisieren():
                for row, items in enumerate(liste):
                    for column, item in enumerate(items):
                        s = v.get()
                        print s

    b_r4 = Button(rootWin1, text = ' Aktualisieren ', command=aktuaLisieren)
    b_r4.grid(row=4, column=2)

    rootWin1.mainloop()

auswahlUebersicht()
wie bekomm ich alle vier verschiedenen werte für v ausgelesen???

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 15:41
von Sirius3
@DMD: Du mußt Deine v in einer Liste speichern. Dir wurde auch schonmal empfohlen die vielen Labels in einer Schleife zu erzeugen. Das Definieren einer Funktion innerhalb einer Schleife sollte so nicht sein!

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 16:34
von DMD
ok, ich bringe es aber am liebsten erst einmal zum laufen, dann mach ich immer die codeverbesserung.
is für mich leichter. wenn alles fertig ist, poste ich das dann nocheinmal.
meine v hatte ich schon in einer liste übernommen, ich möchte aber nicht die am
anfang angezeigten v-strings aus der liste, sondern alle v neu aus dem entry_1 auslesen,
da sie ja auch verändert werden können.

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 16:47
von Sirius3
@DMD: :?: Würde v nicht v heißen, sondern einen ordentlichen Namen haben, wäre die Verwirrung vielleicht nicht ganz so groß. v ist ein StringVar das den aktuellen Inhalt Deines Entries enthält.

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 16:58
von DMD
v wird aber ja nur aus der anfänglichen vorgabe (eben aus der liste) in das entry übernommen.
das ist ja auch so wie ich es haben will.
wenn man den code startet, wird das fenster mit den werten aus der liste übernommen und angezeigt.
wenn das geschehen ist, will ich die anfangs geladenen v-werte aber verändern können und dann
komplett neu auslesen. für den anfänglichen v-wert in A (8.75) will ich dann z.B. eine 10 eintragen, und
diesen wert 10 für A neu auslesen.
ich will also die alten werten, die zu anfang aus der liste genommen werden, gar nicht haben,
sondern will das entry komplett neu auslesen, weil ich die aktuell neu eingetragenen werte im entry haben will.
Für C (-0.25) funktioniert es ja, allerdings 4 x :(

Re: Tabelle mit Entry anstall Label

Verfasst: Donnerstag 17. September 2015, 22:57
von DMD
trotzdem danke für eure hilfe :)