执行python3脚本的QProcess无法正常工作

2024-09-29 02:20:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在执行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}$

Tags: 命令行脚本标准footime信号状态时间
1条回答
网友
1楼 · 发布于 2024-09-29 02:20:48

我认为问题在于python对标准输出的处理。我试过这个剧本:

def foo():
    #print(time.ctime())
    sys.stdout.write(time.ctime()) 
    sys.stdout.write("\n")
    sys.stdout.flush()
    threading.Timer(1, foo).start()

我用sys.stdout.write取代了{},它起作用了。我认为真正的区别在于调用flush。在

换句话说,您的脚本将永远运行,因此标准输出永远不会刷新。如果您尝试另一个脚本,该脚本在五次迭代后结束:

^{pr2}$

在Qt应用程序中,您将在5秒后看到整个输出。在

相关问题 更多 >