【问题标题】:Send data to Qthread when in have changes in GUI windows pyqt5在 GUI 窗口 pyqt5 中发生更改时将数据发送到 Qthread
【发布时间】:2018-01-21 23:08:29
【问题描述】:

嗨,我有 Qthread,它必须等待用户从 MainWindow 输入的几分钟 一些Qthread代码

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)

主窗口部分代码:

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

谢谢

【问题讨论】:

  • 你可以更好地解释我,我什么都不懂。 :P
  • GUI 中有一个self.ui.spinBox = QtWidgets.QSpinBox(self.centralwidget),当用户按下self.ui.pushButton.clicked.connect(self.on_start) 时,我必须将它的value 发送到Qthread,可能是Worker

标签: python python-3.x pyqt pyqt5 qthread


【解决方案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)

图形界面:

class MyWin(QtWidgets.QMainWindow):
    ...

    def on_start(self):
        if not self.myworker.isRunning():
            self.myworker.setTime(self.ui.spinBox.value())
            self.myworker.start()

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2013-10-06
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多