OK Nobuddy
Als Referenzscript für die Moduldatei
gui_KundenNeu.py gilt für mich immer noch:
https://gist.github.com/4033430
Nobuddy hat geschrieben:Bei Deiner ersten Änderung in der Methode process in Klasse Controller, ist ja nur die Printausgabe geändert, was ja an der Ausführung nichts ändert.
Stimmt diese Änderung hat keinen Einfluss auf das Funktionieren des Skriptes. Habe ich übrigens auch noch falsch abgeändert. Ich wollte aus der bestehenden Methode
process:
Code: Alles auswählen
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(self.view.entry_vars[0])
print(listbox_item)
folgendes machen:
Code: Alles auswählen
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(listbox_item)
Da die Zeile:
die nicht benötigte Ausgabe von:
PY_VAR0
wirft.
wuf hat geschrieben:Meine Frage. Warum schreibst du in der folgenden Zeile die Parameternamen in Grossbuchstaben (wie Konstanten)?:
Hier musst du mich falsch verstanden haben. Ich meinte nicht die Argumente beim Aufruf bzw. Erstellung der Instanz für
Controller sondern die Parameter im Konstruktor
__init__ der Klasse
Controller.
Habe deine Applikationdatei mit welcher das Ganze gestartet wird wie folgt geändert:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# For Python3.x
import gui_KundenNeu_01 as app
MAIN_TITLE = 'Anlage Neukunden'
SUB_TITLE = 'Auswahl Kundenkreis'
# Kundendefinition
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
# Kundenspalten
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.',
'PLZ', 'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon',
'Handy', 'Fax', 'Mail','Internetseite']
app.Controller(LISTBOX_ITEMS, DEFAULT_LABELS, MAIN_TITLE, SUB_TITLE).run()
In deiner Moduldatei habe ich die Klasse
Model einmal eliminiert da sie für den momentane Stand deiner Anwendung noch nicht viel bringt. Habe noch folgendes gändert:
Code: Alles auswählen
class Controller(object):
def __init__(self, listbox_items, default_labels, main_title, sub_title):
#self.model = Model(listbox_items)
#self.model2 = Model(default_labels)
self.default_labels = default_labels
self.view = ListGui(self, listbox_items, default_labels,
main_title, sub_title, CONFIG)
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(listbox_item)
def collect_entries(self):
entry_data = dict()
for index, entry_var in enumerate(self.view.entry_vars):
print("{} : {}".format(self.default_labels[index],
entry_var.get()))
entry_data[self.default_labels[index]] = entry_var.get()
print()
print(entry_data)
def run(self):
self.view.run()
#class Model(object):
#def __init__(self, items):
#self.items = items
#self.items2 = items
def main():
Controller(LISTBOX_ITEMS, DEFAULT_LABELS, MAIN_TITLE, SUB_TITLE).run()
#--- MODUL-TEST ---------------------------------------------------------------#
if __name__ == '__main__':
MAIN_TITLE = 'Anlage Neukunden'
SUB_TITLE = 'Auswahl Kundenkreis'
# Kundendefinition
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
# Kundenspalten
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.',
'PLZ', 'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon',
'Handy', 'Fax', 'Mail','Internetseite']
main()
Ein Klick auf ein Element der Listbox erzeugt ein Eintrag im ersten Entry-Feld. Und ein aktivieren von
Übernehmen gib auch alle Eingabefelder aus. Also bei mir funktioniert es so.
N.B: Die Moduldatei
qui_KundenNeu.py kann mit dieser Änderung auch direkt gestartet werden.
Gruß wuf
