ich habe eine Frage zum Stil. Es geht um die Aktualisierung einer QComboBox wenn sich an anderer Stelle eine QTableView bzw. dessen Model sich ändert.
Aktuell übergebe ich den Controller (A) mit der QComboBox und der Methode zur Initalisierung an den Controller (B) mit der QTableView.
Wenn sich die Daten im Model ändern (onclick btn_save) dann wird "init_combo_box" aufgerufen und das item_model als auch die QComboBox neu inialisiert und aktualisiert.
Das funktioniert soweit auch... ich finde nur das erzeugt eine recht enge Kopplung. Gibt es hier andere Techniken um zwischen den Controller zu kommunizieren für eine Aktualisierung der QWidgets um so eine lose Kopplung zu erzeugen? Ich bin noch recht neu im PyQt-Umfeld. Meine bisherigen Schwerpunkte waren ehr WebDevelopment und da war ich mit den EventHandlern immer ganz Happy... bei PyQt sehe ich da noch nicht ganz so durch.
Hier ein vereinfachtes Code-Beispiel:
Code: Alles auswählen
class AController:
def __init__(self, combo_box):
self.combo_box = combo_box
self.init_combo_box()
def init_combo_box(self):
item_model = QtGui.QStandardItemModel()
list = repository.select_combo_box_list()
for item in list:
item = QtGui.QStandardItem(list[0])
item.setData(list[1])
item_model.appendRow(item)
del combo_box_list
self.combo_box.setModel(item_model)
class BController:
def __init__(self, table_view, btn_save, controller_a):
self.table_view = table_view
self.btn_save = btn_save
self.model = QSqlRelationalTableModel()
self.controller_a = controller_a
"""
Init Tableview (QSqlRelationalTableModel, setEditStrategy = OnManualSubmit)
"""
def on_click_save_button(self):
self.model.submitAll()
self.controller_a.init_combo_box()
Viele Grüße
Matze