Jeśli to zrobisz

    def filterAcceptsRow(self, source_row, source_parent):
    # Assign a role for filtering
    if self.findCheckType == True:
        self.setFilterRole(Devices.DevicetypeRole)
    elif self.findCheckDepart == True:
        self.setFilterRole(Devices.DepartmentRole)
    self.countFindItems = self.rowCount()
    return super(SelectModel, self).filterAcceptsRow(source_row, source_parent)

Kompilator zgłasza błąd

Connected to pydev debugger (build 193.5662.61)
Traceback (most recent call last):
File "F:\.....\app.py", line 1230, in filterAcceptsRow
self.countFindItems = self.rowCount()
RecursionError: maximum recursion depth exceeded while calling a Python object

Jak mogę uzyskać liczbę filtrowanych przedmiotów?

0
test tests 25 marzec 2021, 11:51

1 odpowiedź

Najlepsza odpowiedź

Po zmodyfikowaniu filtra wewnątrz filterAcceptsRow Unieważnia filtr, który powoduje filterAcceptsRow oceniany dla wszystkich wierszy, co jest nieskończoną pętlą.

Numer filtrowanych wierszy można obliczyć w ten sposób: self.sourceModel().rowCount() - self.rowCount().

Również zamiast if something == True: możesz napisać if something:.

1
mugiseyebrows 25 marzec 2021, 11:21