mehrspaltige Listbox() ???

Fragen zu Tkinter.
Antworten
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

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.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

in der zwischenzeit habeich es auch gefunden :-)

trotzdem danke an die 'master of the universe' :-)
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

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.
Zuletzt geändert von drabo am Dienstag 22. November 2005, 11:25, insgesamt 1-mal geändert.
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

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.
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

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.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
drabo
User
Beiträge: 8
Registriert: Montag 21. November 2005, 08:25

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.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Versuch mal das, so sollte es funktionieren:

Code: Alles auswählen

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

"Thanks Dr. Green you're the shit" - Cypress Hill

DANKE, DANKE.....

Ich bin neu und kenne nicht alle Befehle :-)

Jetzt gehts
Antworten