示例#1
0
class Main:
    def __init__(self):
        QCoreApplication.setOrganizationName('github.com/misdoro')
        QCoreApplication.setApplicationName('Battery tester')
        self.threadpool = QThreadPool()
        self.instr_thread()
        self.datastore = DataStore()
        signal.signal(signal.SIGTERM, self.terminate_process)
        signal.signal(signal.SIGINT, self.terminate_process)
        self.data_receivers = set()
        GUI(self)

    def instr_thread(self):
        self.instr_worker = InstrumentWorker()
        self.instr_worker.signals.data_row.connect(self.data_callback)
        self.threadpool.start(self.instr_worker)
        self.instr_worker.signals.start.emit()

    def subscribe(self, receiver):
        self.data_receivers.add(receiver)

    def data_callback(self, data):
        self.datastore.append(data)
        for r in self.data_receivers:
            r.data_row(self.datastore, data)

    def send_command(self, command):
        self.instr_worker.signals.command.emit(command)

    def at_exit(self):
        self.instr_worker.signals.exit.emit()
        self.threadpool.waitForDone()

    def terminate_process(self, signal, _stack):
        self.at_exit()
        sys.exit()