如何基于C++运行并实时传参给一个PyQt窗口?

我有一个基于PyQt的python脚本,希望利用Python提供的API在C++来运行它。
这个脚本里是一个在QApplication里的QMainWindow,由于不能打断QApplication,我把它放在python的子线程里,通过调用python主线程中函数来发送signal给slot传参。



我的问题是:由于python主进程一缺少命令运行就不会激活,而子进程中的窗口也会处在无响应的状态,我现在只能在主进程中使用sleep保持python依然运行,C++只能等待睡眠结束后再发送信息给窗口。,这样又会引起窗口的延迟。

有没有什么办法避免使用sleep,实时控制这样的PyQt主窗口,又不影响他的运行?

1个回答

鉴于你是三零(0采纳,0悬赏,0声望)用户,就简单说下吧。

不要在主线程里面调用sleep去阻塞,可以用定时器来延迟,或者在工作线程里面sleep。
这样通讯的时候用sendmessage发消息,就能收了。

weixin_42722558
Tx.Yang 不好意思,我之前以为定时器可以用,但是发现还是有问题。因为定时器本身也是另外开一条线程,本质上和主窗口是一样的,如果主线程不工作,副线程都会暂停。
大约一年之前 回复
weixin_42722558
Tx.Yang 非常感谢!在python的主线程里用定时器确实是个好选择,不仅能定时回传状态,也可以随时取消。我主窗口的工作线程不能sleep,因为被QApplication一直占用着。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问