Seite 1 von 1

Erstellen u. Zugriff von neuen Elementen wärend der Laufzeit

Verfasst: Dienstag 20. April 2010, 10:22
von T1m1
Hallo zusammen,

bei mir läufts grad net so gut.. steh auf dem Schlauch...
hoffe ihr könnt mir Helfen!

Nach Auswahl einer Datei werden informationen aus der gelesen und dann in der GUI für dieses Datei eine Zeile mit Labels, Textfelder und Checkbuttons erstellt. Für jede Datei eine neue Zeile...

Mein Problem liegt darin, die Einzelnen Elemente anzusprechen.. ich benutze ja für meinen Code immer die gleiche Variable um die Objekte zu erstellen.

Also wie weiß ich, ob der Checkbutton nun von Datei 1 oder Datei 2 angeklickt wurde??

Hier mal ein kleines Beispiel wie ichs meine das immer was neues erstellt wird:

Code: Alles auswählen

from Tkinter import * 
tk = Tk() 
def add_label(): Label(tk, text = "Label Nummer %i" % (len(tk.children)), width = 20).grid() 
Button(tk, text = "neues Label", width = 20, height = 2, command = add_label).grid() 
tk.mainloop()
wie kann man z. B. hier auf die einzelnen verschiedenen labels zugreifen??

Vielen Dank für jeden weiterhelfenden Tipp!

Gruß

Verfasst: Dienstag 20. April 2010, 11:48
von wuf
Hallo T1m1

Hier eine mögliche Variante:

Code: Alles auswählen

import Tkinter as tk

def label_click(event):

    print event.widget.cget('text')

def add_label():

    label_object = tk.Label(main, text = "Label Nummer %i" % (
        len(main.label_object_list)), width = 20)
    label_object.grid()
    label_object.bind('<Button-1>', label_click)

    main.label_object_list.append(label_object)

main = tk.Tk()

main.label_object_list = list()

tk.Button(main, text = "neues Label", width = 20, height = 2,
    command = add_label).grid()

main.mainloop()
Label-Object-Referenzen für den späteren Zugriff in einer Liste sammeln. Ein Klick auf das gewünschte Label gibt dir den Labelname auf die Konsole aus.

Gruß wuf :wink:

Verfasst: Dienstag 20. April 2010, 16:06
von DeKugelschieber
Ganz erlich, das sind doch Probleme mit offensichtlichen Lösungen. Wenn du mehrere Objekte hast speicher die einfach in einer Liste oder einem Dictonary. Dann kannst du auf alle zugreifen.

Verfasst: Dienstag 27. April 2010, 13:53
von T1m1
mui bien gracias!!!

Hatte bis jetzt nicht viel mit Python zu tun deswegen darf ich ja so fragen stellen ;)

Jetzt hat sich aber ein kleines Problem eingeschlichen... ich hatte die Listboxen etc. an ein Canvas gebunden und eine Scrollbar daran gebunden.
Alle Elemente bewegen sich mit der Scrollbar mit... nur nicht die, welche ich mit grid bzw. place verschiebe... normal sind sie ja noch an das Canvas Object gebunden sonst könnte ich sie ja nicht darin verschieben oder??

Grüße...

Verfasst: Donnerstag 29. April 2010, 08:21
von wuf
Hallo T1m1

Ohne deine Code-Präsentation können wir dir leider nicht weiterhelfen.

Gruß wuf :wink: