self.worker.beep.connect(self.update)
self.spinbox.valueChanged.connect(self.worker.update_value)


class Worker(QtCore.QThread):
    beep = QtCore.pyqtSignal(int)

def __init__(self, sleep_time):
    super(Worker, self).__init__()
self.running = False
self.sleep_time = sleep_time

def run(self):
    self.running = True
i = 0
while self.running:
    i += 1
self.beep.emit(i)
time.sleep(self.sleep_time)

def stop(self):
    self.running = False

def update_value(self, value):
    self.sleep_time = value
В PyQt, как лучше всего обмениваться данными между главным окном и потоком