Ich habe im View einen Datenklasse die verschiedene Tkinter-Variablen enthält:
Code: Alles auswählen
class ExportImportMixin:
def import_data(self, sender_dict):
try:
for key in self.EXPORT_IMPORT_ATTRIBUTES:
getattr(self, key).set(sender_dict[key])
except ValueError:
pass
except (IndexError, KeyError):
print('Import of view data', self.__class__.__name__, 'failed...')
return 0
def export_data(self):
data_to_export = {}
try:
for key in self.EXPORT_IMPORT_ATTRIBUTES:
data_to_export[key] = getattr(self, key).get()
return data_to_export
except ValueError:
pass
except (IndexError, KeyError):
print('Export of view data', self.__class__.__name__, 'failed...')
return 0
class DataContainer(ExportImportMixin):
EXPORT_IMPORT_ATTRIBUTES = ['work_directory',
'nomenclature',
'wheel_type',
'rotation_direction',
'blade_count_main',
'blade_count_splitter']
def __init__(self, controller):
self.ctrl = controller
self.work_directory = tk.StringVar()
self.nomenclature = tk.StringVar()
self.wheel_type = tk.StringVar()
self.rotation_direction = tk.StringVar()
self.blade_count_main = tk.IntVar()
self.blade_count_splitter = tk.IntVar()
Bei bestimmten Änderungen/Eingaben im View ist es aber so, dass im Model nach Erhalt der Daten noch Berechnungen ausgelöst werden und
im Anschluss das Model berechnete/ geänderte Daten an den View zurücksendet. Ebenfalls In Ordnung...
Da aber durch das Zurücksenden von Daten aus Model die Tkinter-Variablen im View wieder überschrieben werden, sendet ja der View gleich im Anschluss, aufgrund der definierten .trace('w', ...) Methoden die eben erhaltenen Daten nochmal zurück an das Model.
An sich erstmal nicht schlimm, aber unnötig und mir will grad keine Lösung einfallen, wie ich dies umgehen kann?! Ich hoffe auf Hilfe/ Denkanstöße von euch.
Gruß Seb