Fehler beim Ändern eines Hintergrundbildes aus einem Thread.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Kopakpy
User
Beiträge: 9
Registriert: Mittwoch 6. Dezember 2017, 22:19

Samstag 16. Dezember 2017, 22:56

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")
        
__deets__
User
Beiträge: 3500
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 17. Dezember 2017, 01:27

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.
Kopakpy
User
Beiträge: 9
Registriert: Mittwoch 6. Dezember 2017, 22:19

Sonntag 17. Dezember 2017, 03:01

QTimer hat wunderbar funktioniert.
Danke.

Manchmal sind die einfachen Dinge doch die besseren :-)
Antworten