Pyside2:QObject::startTimer: Timers cannot be started from another thread

老虎说测试 脚本开发字数 672阅读2分14秒阅读模式
摘要今天在使用Pyside2做一款自动化测试工具的时候,遇到了这个报错,主要是在文本框获取焦点的时候,触发这个报错,也不是科班出生啊,就没去钻研源码了,先解决问题吧!

今天在使用Pyside2做一款自动化测试工具的时候,遇到了这个报错,主要是在文本框获取焦点的时候,触发这个报错,也不是科班出生啊,就没去钻研源码了,先解决问题吧!

Pyside2:QObject::startTimer: Timers cannot be started from another thread文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

先来看看报错信息文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

QObject::startTimer: Timers cannot be started from another thread
QObject::startTimer: Timers can only be used with threads started with QThread

查了一堆的资料,也没看出个所以然,反正就是和线程相关,因为在这套测试程序中,用到的线程还比较多,但是不管怎么调整线程,都没法解决这个问题,后面突然想到,Pyside2是只推荐在主线程中操作界面的,这里就提到了信号槽的概念,果断的试了一下,还真的可以。文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

我们现在主要是在自动测试完成后,需要将光标定位到输入序列号的位置,方便自动扫码操作,因为,我们再来建立一个信号槽,来更新它。文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

1、信号槽类新增方法:文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

class MySignals(QObject):
    focus_get = Signal()

2、实例化:文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

self.ms = MySignals()
        self.ms.focus_get.connect(self.focusget)

3、执行方法:文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

def focusget(self):
    self.ui.snnum.setFocus()

4、调用方法:文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

self.ms.focus_get.emit()

 文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

这样就完美的解决了这个提示消息,代码就是要在运行的时候,无任何的提示信息,不然就是运用不到位,存在一定的风险。文章源自陈学虎-https://chenxuehu.com/article/2021/12/7822.html

写代码需要谨慎,做工具需要认真!

 
  • 版权声明:本文为原创文章,转载请附上原文出处链接及本声明。
  • 转载请注明:Pyside2:QObject::startTimer: Timers cannot be started from another thread | https://chenxuehu.com/article/2021/12/7822.html