Skip to content

Restic UI - QtWaitingSpinner unexpected type 'float'

Restic UI
  • 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

  • FrankMF FrankM hat am auf dieses Thema verwiesen
  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • Restic UI - Repo Version

    Restic UI
    1
    0 Stimmen
    1 Beiträge
    82 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Vorstellung Part 2

    Restic UI
    1
    0 Stimmen
    1 Beiträge
    122 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    130 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    2 Beiträge
    183 Aufrufe
    FrankMF

    Die REST Unterstützung ist komplett 🤓

    Link Preview Image Not Found

    favicon

    (gitlab.com)

    Ich denke, ein wenig Dokumentation wäre noch gut ☺

  • Django - Webframework

    Python3
    1
    0 Stimmen
    1 Beiträge
    105 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Released

    Restic UI
    1
    0 Stimmen
    1 Beiträge
    141 Aufrufe
    Niemand hat geantwortet
  • Python3 - QInputDialog

    Python3
    1
    0 Stimmen
    1 Beiträge
    135 Aufrufe
    Niemand hat geantwortet
  • Python3 - RegEx für ein LineEdit

    Python3
    2
    0 Stimmen
    2 Beiträge
    153 Aufrufe
    FrankMF

    Gut, Menschen die mich kennen, wissen das IPv6 nicht so mein Spezialgebiet ist. Es hilft aber nichts, auch damit muss man sich beschäftigen 🙂

    Es war etwas schwierig was Passendes zu finden, aber ich denke das hier ist ganz gut. Ob es alle Möglichkeiten bei IPv6 beinhaltet, weiß ich nicht zu 100%.

    Hier eine Seite, wo ich was Passendes gefunden habe.
    https://ihateregex.io/expr/ipv6/

    Code # regex für IPv6 reg_ex = QRegExp('^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$') input_validator = QRegExpValidator(reg_ex, self.lineedit2_ipv6) self.lineedit2_ipv6.setValidator(input_validator)

    Ein paar Test von mir ergaben, das es so aussieht als wenn es funktioniert 🙂