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 
  • 4
  • 2
  • 1
  • 1
  • 2
  • 1
  • 1
  • 3