ich habe per Qt Designer eine Form, die dann direkt geladen wird, mit einem QTableWidget mit mehreren Spalten erstellt, in welchem Daten aufgelistet werden und würde gerne einen Filter einfügen, um diese Daten durch Eingabe in ein QLineEdit filtern zu können.
Leider erhalte ich beim Starten der Anwendung immer folgende Fehlermeldung:
Deaktiviere ich diese Zeile, funktioniert alles, allerdings ohne gewünschte Filterung.File "D:\__Sicherungsdaten\_Programmiersprachen\PycharmProjects\MovieMusicList\CodeFilesMovies\setup_gui_movies.py", line 22, in connect_actions
self.lineEdit_Jahr.textChanged.connect(self.proxy_model.setFilterFixedString)
^^^^^^^^^^^^^^^^
AttributeError: 'ListMovies' object has no attribute 'proxy_model'
Betroffene Funktion:
Code: Alles auswählen
def connect_actions(self):
self.moviesTable.itemDoubleClicked.connect(self.OpenLink) # Doppelklick-Ereignis
self.moviesTable.setEditTriggers(QAbstractItemView.NoEditTriggers) # Tabelle nicht editierbar
self.lineEdit_Titel.textChanged.connect(partial(self.sort, 1))
self.lineEdit_Jahr.textChanged.connect(self.proxy_model.setFilterFixedString)
Code: Alles auswählen
class ListMovies(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi(r"GUI\GUI_Movies.ui", self)
sup.connect_actions(self)
sup.filterboxes(self)
self.progressBar.hide()
ui_width = self.width()
ui_height = self.height()
xy = center_window(self, ui_width, ui_height)
self.move(int(xy[0]), int(xy[1]))
self.show()
self.showdialogNeuEinlesen()
def closeEvent(self, event):
try:
cf.save_csv(self, r"doks\movies.csv")
except Exception as e:
print(e)
def sort(self, col):
print(col)
def column_from_label(self, label):
model = self.moviesTable.horizontalHeader().model()
self.proxy_model = QSortFilterProxyModel()
self.proxy_model.setFilterKeyColumn(-1) # Search all columns.
self.proxy_model.setSourceModel(model)
self.proxy_model.sort(0, Qt.AscendingOrder)
model.setModel(self.proxy_model)
for column in range(model.columnCount()):
if model.headerData(column, QtCore.Qt.Horizontal) == label:
return column
return -1
def format_table_widget(self):
self.moviesTable.resizeColumnsToContents()
self.moviesTable.resizeRowsToContents()
# self.moviesTable.sortItems(0) # teilweise fehlende Infos dadurch ???
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = ListMovies()
sys.exit(app.exec_())
Viele Grüße aus Süd-BW