2017-08-14 109 views
-1

嗨,我有QThread的这不得不等待了几分钟,其用户输入从主窗口 的一些QThread的代码发送数据的QThread中,当在GUI窗口的变化pyqt5

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) 

主窗口中的一些代码:

THX

+0

你可以更好地解释我,我什么都不懂。 :P – eyllanesc

+0

在GUI中有一个'self.ui.spinBox = QtWidgets.QSpinBox(self.centralwidget)',我必须把它的'value'值发送给'Qthread',可能情况下是'Worker',当用户按下时'self.ui.pushButton.clicked.connect(self.on_start)' – Hellbea

回答

1

最简单的方法是创建一个更新的睡眠时间的函数:

主题:

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()