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