问题描述
我正在尝试通过检查标志 is_interrupted 从QRunnable.run()手动返回。目前,我使用 if 进行此操作,但问题是迭代之间的时间间隔太大,在某些GUI交互过程中这是可以察觉的(例如,用户按下按钮“取消”后需要回滚一些时间”)。正如我注意到的,使用QTimer的唯一方法是将其信号timeout()与插槽连接,但是在这种情况下,不可能从QRunnable.run()返回。我对吗?在这种情况下,可能有人有使用Qt的经验。你会帮我很多忙。谢谢。
class process_data_signals(QtCore.QObject):
finished = QtCore.pyqtSignal(list)
class process_data(QtCore.QRunnable):
def __init__(self,parameters):
super(process_data,self).__init__()
self.params = parameters
self.signals = process_data_signals()
self.is_interrupted = False
self.common_signals = common_signals()
@QtCore.pyqtSlot()
def run(self):
self.common_signals.active.emit(self)
clk,signals_ = convert_from_csv(self.params)
clk.groupby_signal()
for i in range(0,len(signals_)):
signals_[i].data.rename(columns={'CH1': 'Voltage (volts)'},inplace=True)
signals_[i].groupby_signal()
for i in range(0,len(signals_)):
time_shift = (signals_[i].data['Time (secs)'].iloc[0] -
clk.data['Time (secs)'].iloc[0])
for j in range(0,len(signals_[i].data['Time (secs)'])):
if self.is_interrupted:
print("aloha")
return
signals_[i].data['Time (secs)'].iloc[j] -= time_shift
signals_count = len(self.params[0])
self.signals.finished.emit([clk,signals_,signals_count])
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)