当 GUI 发生变化时将数据发送到 Qthread windows pyqt5
Send data to Qthread when in have changes in GUI windows pyqt5
嗨,我有 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)
部分主要代码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()
感谢
最简单的选择是创建一个更新睡眠时间的函数:
主题:
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()
嗨,我有 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)
部分主要代码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()
感谢
最简单的选择是创建一个更新睡眠时间的函数:
主题:
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()