Seite 1 von 1

Fehler beim Ändern eines Hintergrundbildes aus einem Thread.

Verfasst: Samstag 16. Dezember 2017, 22:56
von Kopakpy
Ich wollte einen kleinen Effekt auf meinen Button zaubern. Unten stehender Beispielcode gibt mir allerdings eine Fehlermeldung aus.
"QPixmap: It is not safe to use pixmaps outside the GUI thread"

Kann ich aus dem Thread eine Nachricht zurück an den GUI-Thread schicken?
Oder macht man das mit PyQt irgendwie anders?

Code: Alles auswählen


import thread
import time

    self.radioDown=QPushButton()
    
    self.radioDown.clicked.connect(self.tickle)
    
    def paint_back(self, url):
        self.setStyleSheet(self.style + "\nbackground-image: url(" + url + ");")

    def tickle(self, color):
        self.paint_back("pressed.bpm")
        thread.start_new_thread ( self.tickle_done, () )

    def tickle_done(self):
        time.sleep(0.2)
        self.paint_back("unpressed.bpm")
        

Re: Fehler beim Ändern eines Hintergrundbildes aus einem Thread.

Verfasst: Sonntag 17. Dezember 2017, 01:27
von __deets__
Es gibt zu Qt und threading viel Dokumentation. Zusammengefasst funktioniert threadübergreifend das senden von Signalen. Nicht aber das anfassen von Objekten.

Nur brauchst du das gar nicht. Ein simpler QTimer tut seinen Zweck für dich auch.

Re: Fehler beim Ändern eines Hintergrundbildes aus einem Thread.

Verfasst: Sonntag 17. Dezember 2017, 03:01
von Kopakpy
QTimer hat wunderbar funktioniert.
Danke.

Manchmal sind die einfachen Dinge doch die besseren :-)