首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Python控制台输出重定向到QTextBox

如何将Python控制台输出重定向到QTextBox
EN

Stack Overflow用户
提问于 2010-05-19 00:40:34
回答 3查看 5K关注 0票数 4

我正在开发一个用于Linux内核重新编译的GUI。为此,我需要从Python实现4-5个Linux命令。我使用Qt作为GUI设计器。我已经使用os.system()调用成功地实现了这些命令。但输出是在控制台获得的。真正的问题是命令的输出是一个列表,几乎需要20-25分钟的连续打印。我们如何将这个控制台输出转换到一个用Qt设计的文本框中。谁可以帮助我在Qt中实现setSource()操作,使用源代码作为实时控制台输出。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-22 23:58:48

代码语言:javascript
运行
复制
self.process = QProcess()
self.connect(self.process, SIGNAL("readyReadStdout()"), self.readOutput)
self.connect(self.process, SIGNAL("readyReadStderr()"), self.readErrors)
tarsourcepath="sudo tar xvpf "+ self.path1
self.process.setArguments(QStringList.split(" ",tarsourcepath))
self.process.start()



def readOutput(self):

    self.textBrowser2.append(QString(self.process.readStdout()))
    if self.process.isRunning()==False:
        self.textBrowser2.append("\n Completed Successfully")




def readErrors(self):
    self.textBrowser2.append("error: " + QString(self.process.readLineStderr()))

这对我来说工作做得很好。谢谢你们所有人。

票数 7
EN

Stack Overflow用户

发布于 2010-05-19 01:20:04

我主要和wxPython打交道,但是http://diotavelli.net/PyQtWiki/Capturing_Output_from_a_Process是一个可行的解决方案吗?

在该页面中:

Problem:您希望运行一个进程,该进程将大量信息打印到控制台,并在文本编辑器或浏览器中显示输出,但结果是图形用户界面冻结,直到该进程完成。

解决方案(许多可能的解决方案之一):创建一个QProcess对象,将其信号连接到类中的一些槽,传递给它所需的参数并启动它。进程的stdout和stderr上的数据将被传送到您的插槽。

continued...

票数 1
EN

Stack Overflow用户

发布于 2010-05-19 01:22:32

使用管道就会出现在脑海中。您可以使用一个后台线程来读取程序的输出(并在添加新行时将事件发送到GUI )。

所以基本想法是这样的:

代码语言:javascript
运行
复制
os.chdir("/usr/src/linux-2.6.34")

p = os.popen("make", "r")
try:
    while True:
        line = p.readline()
        if not line:
            break

        # Replace this with a GUI update event (don't know anything about Qt, sorry)
        print line
finally:
    # Cf. http://docs.python.org/library/os.html#os.popen
    programReturnValue = p.close() or 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2859256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档