Datenübergabe mit Listbox und grid
Verfasst: Dienstag 23. Oktober 2012, 14:01
Hallo zusammen,
habe mir ein Fenster für das anlegen von Neukunden erstellt.
Es besteht aus einer Listbox und einer grid-Texteingabe.
Leider weiß ich nicht, wie ich von der Listbox die Auswahl an die grid-Texteingabe übergeben kann. Dies betrifft nur ein Übergabefeld.
Die Datenübernahme nach dem Ausfüllen der grid-Textfelder, stellt mich auch vor ein Problem.
Ich hoffe, daß Ihr mir da auf die Sprünge helfen könnt?
habe mir ein Fenster für das anlegen von Neukunden erstellt.
Es besteht aus einer Listbox und einer grid-Texteingabe.
Leider weiß ich nicht, wie ich von der Listbox die Auswahl an die grid-Texteingabe übergeben kann. Dies betrifft nur ein Übergabefeld.
Die Datenübernahme nach dem Ausfüllen der grid-Textfelder, stellt mich auch vor ein Problem.
Ich hoffe, daß Ihr mir da auf die Sprünge helfen könnt?
Code: Alles auswählen
class KundeNeu(Tk):
def __init__(self):
Tk.__init__(self)
# Fenster
self.title('officeplanet')
# Farbe Button-Frames
bcolor = 'orange'
# Farbe Buttons
bbcolor = 'grey'
fbcolor = 'black'
# Farbe Texteingabe, Textfenster
btxt = 'black'
ftxt = 'white'
# Text Schrift
font = 'NimbusSansL'
# Textgröße Buttons, Texteingabe
fontsize = 14
# Textgröße
output_fontsize = 12
## Listbox ##
text = 'Anlage Neukunde'
items = ['Privatkunde', 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'Großbetrieb, bis 25.000 € Jahresumsatz',
'Konzern, ab 25.000 € Jahresumsatz',
'Komunaler Träger']
self.selection = []
self.items = items
activated = (0,0) # Vor-Aktivierte Punkte
self.text = text
self.listboxTXT = Label(self, text=self.text, background=bcolor,
font=(font, fontsize))
self.listboxTXT.pack(anchor='n', ipadx=5, ipady=10, fill=BOTH)
self.listboxLabel = Label(self, text=self.text,
background=bcolor, font=(font, fontsize))
self.listboxLabel.pack(anchor='s', ipadx=5, ipady=10, fill=BOTH)
self.listbox = Listbox(self.listboxLabel, selectmode=SINGLE,
height=5, width=45, font=(font, output_fontsize))
self.listbox.pack(anchor='s')
# Einträge einfügen
for txt in self.items:
self.listbox.insert(END, txt)
# Vor-Aktivierte Punkte selektieren
for index in activated:
self.listbox.selection_set(index)
## Eingabefelder ##
self.txtLabel = Label(self, background=bcolor)
self.txtLabel.pack(anchor='s', expand='YES', fill=BOTH)
field = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.', 'PLZ',
'Ort', 'Ansprechpartner', 'Telefon', 'Handy', 'Fax',
'Mail','Internetseite']
r = 0
for name in field:
self.KundeNeuLab01 = Label(self.txtLabel, text=name,
width=15, background=bcolor, font=(font, fontsize)
).grid(row=r, column=0, padx=30,pady=10)
self.KundeNeuLab01 = Entry(self.txtLabel, relief=SUNKEN,
width=65, font=(font, fontsize)).grid(row=r, column=1,
padx=5, pady=10)
if name == 'Kundenkreis':
selection = self.display_selection
print('')
r = r + 1
## Buttons unten ##
label_down = Label(self, width=200, background=bcolor)
label_down.pack(anchor='s', ipady=10, fill=BOTH)
button = {
'01-Übernehmen' : self.display_selection,
'02-Abbrechen' : self.destroy,
}
for b in sorted(button):
Button(label_down, width=10, text=b.split('-')[1],
background=bbcolor, font=(font, fontsize),
foreground=fbcolor, command=button[b]).pack(side='left',
padx=210, pady=30)
def display_selection(self):
selection = []
for i in self.listbox.curselection():
index = int(i) # i ist ein String
selection.append(self.items[index])
print("Aktuelle Selektion ist:", selection)
return selection
class Controller(object):
def __init__(self):
self.view = KundeNeu()
self.view.mainloop()
if __name__ == '__main__':
Controller()