IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Erik Šťastný:16.12.2016 12:28

Zdravím,

mám vcelku složitou záležitost a proto ji spouštím v jiném threadu jinak by GUI bylo nepoužitelné, jenže mám problém jak dostat výsledek zpátky do mainThreadu.

Snažil jsem se pochopit různé tutoriály , ale bezúspěšně, mohl by mi někdo poskytnout nějaký co nejjednoduší příklad?

Můj cíl:

class Main(QWidget):

        def __init__(self):

                super().__init__()

        def StartButtonEvent(self):

                self.test = ExecuteThread()
                self.test.start()

        def MyEvent(self):

                #MainThreadGUI

class ExecuteThread(QThread):

        def run(self):

                # A lot of work

                # Emit signal aby MainThread vykonalo MyEvent

Zkrátka aby MainThread začal něco dělat po tom co WorkThread na pozadí něco dokončí.

Díky moc za jakýkoliv příklad!!

Editováno 16.12.2016 12:30
 
Odpovědět
16.12.2016 12:28
Avatar
Odpovídá na Erik Šťastný
Erik Šťastný:16.12.2016 14:26

Tak problém vyřešen :) Kdyby to někoho zajímalo, tak :

from PyQt5.QtCore import pyqtSignal

class Main(QWidget):

    def __init__(self):
        super().__init__()

    def StartButtonEvent(self):
        self.test = ExecuteThread()
        self.test.start()
        self.test.finished.connect(thread_finished)
        self.test.my_signal.connect(my_event)

    def thread_finished(self):
        # gets executed if thread finished
        pass

    def my_event(self):
        # gets executed on my_signal
        pass


class ExecuteThread(QThread):
    my_signal = pyqtSignal()

    def run(self):
        # do something here
        self.my_signal.emit()
        pass
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
16.12.2016 14:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.