Reputation: 299
Hi i have Qthread which have to wait some minutes which user input from MainWindow the some Qthread code
class Worker(QThread):
list_of_dict_signals = pyqtSignal(list)
def __init__(self):
QThread.__init__(self)
self.running = False
def run(self):
self.running = True
while self.running:
info = self.check_info()
print(info)
self.list_of_dict_signals.emit(info)
self.sleep(value that user have to input in main window)
Some code of main window:
class MyWin(QtWidgets.QMainWindow):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.myworker = Worker()
self.myworker.list_of_dict_signals.connect(self.onDataFromThread)
self.ui.pushButton.clicked.connect(self.on_start)
self.ui.pushButton_2.clicked.connect(self.on_stop)
def on_start(self):
if not self.myworker.isRunning():
#need to send data from self.ui.spinBox.value() each time when user press start
self.myworker.start()
Thx
Upvotes: 0
Views: 408
Reputation: 244282
The simplest option is to create a function that updates the sleep time:
Thread:
class Worker(QThread):
list_of_dict_signals = pyqtSignal(list)
def __init__(self):
QThread.__init__(self)
self.running = False
self.time_sleep = 0.1 # default value
def setTime(self, val):
self.time_sleep = val
def run(self):
...
self.sleep(self.time_sleep)
GUI:
class MyWin(QtWidgets.QMainWindow):
...
def on_start(self):
if not self.myworker.isRunning():
self.myworker.setTime(self.ui.spinBox.value())
self.myworker.start()
Upvotes: 1