I created a QtableView in a MainWindow. it shows a Table via Model
class MitarbeiterWindow(QMainWindow, Ui_MitarbeiterWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
#Menüleisten funktionen
self.actionLogout.triggered.connect(self.Logout)
self.actionClose.triggered.connect(self.beendenfunktion)
self.actionMitarbeiter.triggered.connect(self.mitarbeiteroeffnen)
self.actionAirline.triggered.connect(self.airlinesoeffnen)
self.actionAbteilungen.triggered.connect(self.abteilungenoeffnen)
self.actionInfo.triggered.connect(self.hilfeanzeigen)
#Buttonfunktionen
self.btn_add.clicked.connect(self.mitarbeiterhinzufuegen)
db.open()
self.db_abfrage()
def db_abfrage(self):
self.mod_mitarbeiter = QtSql.QSqlRelationalTableModel()
self.mod_mitarbeiter.setTable("mitarbeiter")
self.mod_mitarbeiter.setRelation(2,QtSql.QSqlRelation("abteilungen","Abteilungsid", "Abteilung"))
self.tbl_mitarbeiter.setItemDelegate(QtSql.QSqlRelationalDelegate())
self.mod_mitarbeiter.select()
self.tbl_mitarbeiter.setModel(self.mod_mitarbeiter)
def Logout(self):
print("-----Es wird ausgeloggt-----")
mitarbeiterwindow.close()
mainwindow.close()
loginwindow.show()
def mitarbeiterhinzufuegen(self):
print("-----/////Mitarbeiter hinzufügen-----")
mitarbeiteraddwindow.show()
mitarbeiterwindow.close()
when i add a new entry to the sql db it shows it self only after reopening the whole app.
is there a way to update the model oder refresh it aber reopening the window?
is there a way to refresh the Table with new entries after saving the new entries?
CodePudding user response:
i made a short solution with an added button [Refresh] and following code
class MitarbeiterWindow(QMainWindow, Ui_MitarbeiterWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
#Menüleisten funktionen
self.actionLogout.triggered.connect(self.Logout)
self.actionClose.triggered.connect(self.beendenfunktion)
self.actionMitarbeiter.triggered.connect(self.mitarbeiteroeffnen)
self.actionAirline.triggered.connect(self.airlinesoeffnen)
self.actionAbteilungen.triggered.connect(self.abteilungenoeffnen)
self.actionInfo.triggered.connect(self.hilfeanzeigen)
#Buttonfunktionen
self.btn_add.clicked.connect(self.mitarbeiterhinzufuegen)
self.db_abfrage()
self.btn_delete.clicked.connect(self.db_refresh)
def db_abfrage(self):
self.mod_mitarbeiter = QtSql.QSqlRelationalTableModel()
self.mod_mitarbeiter.setTable("mitarbeiter")
self.mod_mitarbeiter.setRelation(2,QtSql.QSqlRelation("abteilungen","Abteilungsid", "Abteilung"))
self.tbl_mitarbeiter.setItemDelegate(QtSql.QSqlRelationalDelegate())
self.db_refresh()
def db_refresh(self):
model = self.mod_mitarbeiter
abfrage = """UPDATE mitarbeiter """
query.exec(abfrage)
model.select()
self.tbl_mitarbeiter.setModel(model)
now i have to figuere out how to make it automatical without a button