我在执行QProcess中的python3脚本时遇到了这个问题。python脚本正在打印秒到秒的时间,它在命令行中运行良好。在Qt中,信号readyReadStandardOutput()连接到一个插槽,在这个插槽中调用readAllStandardOutput()从脚本读取标准输出。问题是插槽只被调用一次!它只打印一次时间,然后不再打印。QProcess的状态保持在“运行”状态。readyReadStandardError()和error(QProcess::ProcessError)信号从不调用。在
为什么时隙只调用一次,而它必须每秒钟调用一次?谢谢
Python脚本:
import time, threading
def foo():
print(time.ctime())
threading.Timer(1, foo).start()
foo()
Qt时间:
^{pr2}$
我认为问题在于python对标准输出的处理。我试过这个剧本:
我用},它起作用了。我认为真正的区别在于调用
sys.stdout.write
取代了{flush
。在换句话说,您的脚本将永远运行,因此标准输出永远不会刷新。如果您尝试另一个脚本,该脚本在五次迭代后结束:
^{pr2}$在Qt应用程序中,您将在5秒后看到整个输出。在
相关问题 更多 >
编程相关推荐