今天在使用Pyside2做一款自动化测试工具的时候,遇到了这个报错,主要是在文本框获取焦点的时候,触发这个报错,也不是科班出生啊,就没去钻研源码了,先解决问题吧!
文章源自陈学虎-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
写代码需要谨慎,做工具需要认真!
评论