Restic UI - QtWaitingSpinner unexpected type 'float'


  • Der QtWaitingSpinner in meinem Restic UI lief nicht mit Python 3.10.1 😞 Da Linux Mint Cinnamon aber mit dem Upgrade auf 20.3 Python 3.10 mitbringt, musste ich da ran und das Fixen 😉

    Fehler

    TypeError: setInterval/self, int): argument 1 has unexpected type 'float'
    

    GrĂŒbel, ein wenig suchen und drĂŒber gestolpert das das Problem öfter auftaucht. Gut, schauen wir uns die Zeile mal in Ruhe an.

        def updateTimer(self):
            self._timer.setInterval(1000 / (self._numberOfLines * self._revolutionsPerSecond))
    

    Ok, einfach ein wenig Mathe, das bekommen wir hin. Suchen wir mal die Variablen.

            self._revolutionsPerSecond = 1.57079632679489661923
            self._numberOfLines = 20
    

    Wenn man nun weiß, das eine Variable int eine ganzzahlige Zahl sein muss, dann sieht man sofort das Problem. Die Zahl 1.570.... macht aus dem Ergebnis einen float (Fließkommazahl).

    Das timer.setInterval erwartet aber einen int. Darum bricht python auch mit einem Traceback ab. Gut, ich habe dann mit dieser Zeile ein wenig gespielt und herausbekommen, das es nur die Geschwindigkeit der Änderung des Spinners beeinflusst. Sollte also egal sein, wenn wir diese Zahl etwas verĂ€ndern. Es ist dann evt. nicht mehr so fein einzustellen, aber das sollte nicht stören.

        def updateTimer(self):
            self._timer.setInterval(int(1000 / (self._numberOfLines * self._revolutionsPerSecond)))
    

    Die geĂ€nderte Zeile, die sicherstellt, das an die Funktion setInterval nur ein int Wert ĂŒbergeben wird. Ausprobiert, Fehler weg, dafĂŒr kamen noch ein paar andere, alle mit demselben Problem. Ich habe diese dann alle so gefixt und mein Restic UI lĂ€uft auch mit Python 3.10.1, seit heute auch auf Windows getestet đŸ€•

    Ich habe bei dem Projekt einen Issue eröffnet und meine Änderungen da reingehauen. Ich habe keinen Pull request erstellt, weil ich nicht ĂŒberblicken kann, wo das in dem Projekt noch Auswirkungen hat. Bin ja in der Lernphase..

    Der Link -> https://github.com/z3ntu/QtWaitingSpinner

    Anhang

    Dieses Problem war wohl schon lĂ€nger bekannt und fĂŒhrte in Python 3.9 zu einem Warning, seit 3.10 gibt es kein Warning mehr, sondern ein Traceback und somit muss man ran und es Ă€ndern.


  • Der Autor hat meine Anpassungen um ein paar Änderungen erweitert und in sein Repo eingepflegt. Der QtWaitingSpinenr ist jetzt auch 3.10 kompatibel đŸ€“

    1b268980-92ca-42a4-89a0-a6e4b7ab9378-grafik.png

  • Referenced by  FrankM FrankM 
  • Referenced by  FrankM FrankM 
  • 1
  • 1
  • 2
  • 1
  • 3
  • 2
  • 1
  • 1