是否可以使用QTimer从QRunnable.run返回?

问题描述

我正在尝试通过检查标志 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 (将#修改为@)