Seite 1 von 1

mehrspaltige Listbox() ???

Verfasst: Montag 21. November 2005, 12:53
von drabo
wie kann ich eine mehrspaltige listbox mit labeln erstellen?

|name |vorname | <----label
|------------------------|
|dragan |bojovic | <----- ['dragan','bojovic']
|Hans |Tester | <-----['Hans','Tester']


ps: mit Tkinter

Edit (Leonidas): Ins TkInter-Forum verschoben.

Verfasst: Montag 21. November 2005, 21:22
von mawe
Hi!

Ich hab immer mehr den Eindruck, dass es kaum noch eine Frage zu Python gibt, die hier noch nicht gestell wurde :)

Schau mal hier und hier.

Gruß, mawe

Verfasst: Montag 21. November 2005, 21:38
von Leonidas
mawe hat geschrieben:Ich hab immer mehr den Eindruck, dass es kaum noch eine Frage zu Python gibt, die hier noch nicht gestell wurde :)
Jetzt sind wir nicht mehr die Dauer-Antworter sondern die Verwalter des gesammelten Python-Wissens. Klingt gar nicht mal so schlecht 8)

Verfasst: Montag 21. November 2005, 21:52
von mawe
Leonidas hat geschrieben:Verwalter des gesammelten Python-Wissens. Klingt gar nicht mal so schlecht
Ja, ich fühl mich plötzlich so wichtig :cool: :D

Danke

Verfasst: Dienstag 22. November 2005, 10:34
von drabo
in der zwischenzeit habeich es auch gefunden :-)

trotzdem danke an die 'master of the universe' :-)

Verfasst: Dienstag 22. November 2005, 10:50
von drabo
blöde frage aber wie wende ich das Teil den an?

als MultiListbox.py speichern?
mit 'from MultiListbox import *' importieren

und dann???? bitte vervollständigen, bitte, bitte.....:-)

Code: Alles auswählen

from Tkinter import *
from MultiListbox import *

root = Tk()

datensatz1 = ['Hans','Tester']
datensatz2 = ['Dragan','Bojovic']

listbox = MultiListbox(root, (('Vorname', 10), ('Name', 10)))
listbox.pack(expand=YES,fill=BOTH)

for item in datensatz1:
    listbox.insert(END,item)

for item in datensatz2:
    listbox.insert(END,item)

root.mainloop()
Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Dienstag 22. November 2005, 11:20
von drabo
ich habs :-) so muss es sein:

Code: Alles auswählen

from Tkinter import *
from MultiListbox import *

root = Tk()

datensatz1 = [('Hans','Tester')]
datensatz2 = [('Dragan','Bojovic')]

listbox = MultiListbox(root, (('Vorname', 10), ('Name', 10)))
listbox.pack(expand=YES,fill=BOTH)

for item in datensatz1:
    listbox.insert(END,item)

for item in datensatz2:
    listbox.insert(END,item)

root.mainloop()
Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Dienstag 22. November 2005, 11:55
von drabo
Habe doch noch ein Problem ich hoffe das ihr mir helfen könnt

ich habe den folgenden code geschrieben um den wert wieder auszulesen

Code: Alles auswählen

from Tkinter import *
from MultiListbox import *

def anzeigen():
    aktiver_name = listbox.get(ACTIVE)
    label['text'] = aktiver_name
    
root = Tk()

datensatz1 = [('Hans','Tester')]
datensatz2 = [('Dragan','Bojovic')]

listbox = MultiListbox(root, (('Vorname', 10), ('Name', 10)))
listbox.pack()

for item in datensatz1:
    listbox.insert(END,item)

for item in datensatz2:
    listbox.insert(END,item)

label = Label(root, text = '')
label.pack(expand=YES,fill=BOTH)

knopf = Button(root, text = 'Anzeigen', command = anzeigen)
knopf.pack()

root.mainloop()
Wenn ich unten rechts auf 'Bojovic' klicke zeigt er mir folgendes an:

Bild

auch die Art irritiert mich ['Hans','Bojovic']
könnte das nicht einfach Dragan Bojovic heissen? :-)

kann mir bitte jemand helfen ??

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Dienstag 22. November 2005, 12:18
von mawe
Hi!

Naja, es sind 2 Dinge in 2 Listboxen aktiv, d.h. wenn Du nach den aktiven Elementen fragst, bekommst Du eine List mit den Elementen.
Du kannst folgendes machen:

Code: Alles auswählen

def anzeigen():
    aktiver_name = listbox.get(ACTIVE)
    label['text'] = " ".join(aktiver_name)
Die Datensätze kannst Du auch zusammenfassen:

Code: Alles auswählen

datensatz = [('Hans', 'Tester'), ('Dragan', 'Bojovic')]

for item in datensatz:
    listbox.insert(END, item)
Gruß, mawe

Verfasst: Dienstag 22. November 2005, 14:12
von drabo

Code: Alles auswählen

from Tkinter import *
from MultiListbox import *

def anzeigen():
    aktiver_name = listbox.get(ACTIVE)
    label['text'] = ' '.join(aktiver_name)
    
root = Tk()

datensatz = [('Hans','Tester'),('Dragan','Bojovic')]

listbox = MultiListbox(root, (('Vorname', 10), ('Name', 10)))
listbox.pack()

for item in datensatz:
    listbox.insert(END,item)

label = Label(root, text = '')
label.pack(expand=YES,fill=BOTH)

knopf = Button(root, text = 'Anzeigen', command = anzeigen)
knopf.pack()

root.mainloop()
ich habe deinen code adaptiert, danke. zwei sachen finde ich besser:

1. ich brauche nur einen datensatz
2. durch das ' '.join(aktiver_datensatz) wird der aktive datensatz richtig dargestellt also ohne [' ',' ']

das problem ist aber immer noch das er die daten nicht linienweise ausliest, sondern er stellt sie immer anders dar je nachdem auf welche zelle ich drauf klicke. ich erhalte antworten wie:

Hans Bojovic
Dragan Tester
Dragan Bojovic

etc.

könntest du mir auch dabei behilflich sein???? danke.

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Dienstag 22. November 2005, 14:57
von mawe
Versuch mal das, so sollte es funktionieren:

Code: Alles auswählen

def anzeigen():
    aktiver_name = listbox.get(listbox.curselection())
    label['text'] = " ".join(aktiver_name)

Verfasst: Dienstag 22. November 2005, 15:03
von Gast
"Thanks Dr. Green you're the shit" - Cypress Hill

DANKE, DANKE.....

Ich bin neu und kenne nicht alle Befehle :-)

Jetzt gehts