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

Fragen zu Tkinter.
Antworten
T1m1
User
Beiträge: 23
Registriert: Donnerstag 28. Januar 2010, 09:23

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ß
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Benutzeravatar
DeKugelschieber
User
Beiträge: 82
Registriert: Sonntag 28. Februar 2010, 12:23
Kontaktdaten:

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.
MfG DeKugelschieber
T1m1
User
Beiträge: 23
Registriert: Donnerstag 28. Januar 2010, 09:23

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...
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo T1m1

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

Gruß wuf :wink:
Take it easy Mates!
Antworten