So aktualisieren Sie ein PYQT5 QTableWidget nach Änderungen in der Backend -DatenbankPython

Python-Programme
Anonymous
 So aktualisieren Sie ein PYQT5 QTableWidget nach Änderungen in der Backend -Datenbank

Post by Anonymous »

Ich habe eine PYQT5 -GUI, die als Frontend für eine Oracle -Datenbank dient. Eine der von mir gewünschten Funktionen ist ein Dialogfeld, mit dem der aktuelle Inhalt der Notizen der Datenbank angezeigt wird und dem Benutzer Datensätze dieser Tabelle hinzufügen, löschen und bearbeiten können.

Code: Select all

class NotesManager(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("Notes Manager")
self.resize(1280, 720)
self.populatenotes()

def populatenotes(self):
layout = QVBoxLayout()
hlayout = QHBoxLayout()
newbtn = QPushButton("New Note")
newbtn.clicked.connect(self.newnote)
hlayout.addWidget(newbtn)
delbtn = QPushButton("Delete Note")
delbtn.clicked.connect(self.delnote)
hlayout.addWidget(delbtn)
layout.addLayout(hlayout)
self.dfnotes = c.queryNotes() # Query the database and return a Pandas DataFrame
self.notestbl = QTableWidget()
self.notestbl.setColumnCount(4)
self.notestbl.setRowCount(len(self.dfnotes.index))
self.notestbl.setHorizontalHeaderLabels(['Text', 'Date', 'Report', 'Type'])
for index, row in self.dfnotes.iterrows():
self.notestbl.setItem(index, 0, QTableWidgetItem(row['NOTE']))
self.notestbl.setItem(index, 1, QTableWidgetItem(str(row['NOTEDATE'])))
self.notestbl.setItem(index, 2, QTableWidgetItem(str(row['REPORT'])))
self.notestbl.setItem(index, 3, QTableWidgetItem(row['NOTETYPE']))
self.notestbl.item(index, 1).setFlags(Qt.ItemIsSelectable)
self.notestbl.cellChanged.connect(self.onmulticellchange)
layout.addWidget(self.notestbl)
QBtn = QDialogButtonBox.Close
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.rejected.connect(self.reject)
self.setLayout(layout)

def newnote(self):
na = NoteAdder()
if na.exec():
self.populatenotes()
Wenn die NotizensManager -Klasse aufgerufen wird, wird korrekt angezeigt. Wenn ich auf die Schaltfläche "NEUE Note klicke" klicke, wird in der NOTEADDER -Klasse korrekt angezeigt und fügt der Datenbank einen neuen Datensatz ordnungsgemäß hinzu. Wenn self.populatenotes () am Ende aufgerufen wird, wird der neue Datensatz nicht im QTableWidget angezeigt. Kann die gleiche Funktion (

Code: Select all

populatenotes()
) werden verwendet, um zunächst das QTableWidget zu erstellen und zu aktualisieren, oder erfordert die Aktualisierung eine separate Funktion?
Danke im Voraus!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post