Как отправить сигнал изнутри импортированной функции на pyqt5? - PullRequest
0 голосов
/ 29 апреля 2018

В моей программе есть один рабочий поток, который возвращает число каждую секунду, навсегда, пока в главном окне не прозвучит сигнал остановки. Я хочу, чтобы он испускал сигнал каждый раз, когда он меняет значение, поэтому я могу обновить Главное окно с возвращенным значением. Я пытался просто излучать сигнал в самой функции, но не работает.

рабочий:

from test import save_data

class Worker(QObject):
    finished = pyqtSignal()  # give worker class a finished signal

    def __init__(self, parent=None):
        QObject.__init__(self, parent=parent)

    def do_work(self):
        save_data.main()
        self.finished.emit()  # emit the finished signal when the loop is done

    def stop(self):
        save_data.run = False  # set the run condition to false on stop

test.py:

import time
from Pyqt5.QtCore import pyqtSignal

run = True
value = pyqtSignal(int)

def main():
    x = 1
    while run:
        print(x)
        x += 1
        time.sleep(1)
        #value.emit(x)

1 Ответ

0 голосов
/ 29 апреля 2018

Финальный код:

from PyQt5.QtCore import QThread, QObject, pyqtSignal, pyqtSlot, Qt, QTimer
import time



class Main(QObject):

    divisible_by_4 = pyqtSignal()

    def __init__(self, parent=None):
        QObject.__init__(self, parent=parent)
        self.run = True

    def main(self):
        x = 1
        while self.run:

            print(x)
            x += 1

            if x%4 == 0:
                self.divisible_by_4.emit()

            time.sleep(1)

    def stop(self):
        self.run = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...