将IDLE shell的输入和输出重定向到新的PyQt GUI

时间:2016-05-06 17:42:48

标签: python user-interface pyqt

好的,所以我是新手并且仍在学习,我正在尝试为我的代码连接GUI。我的代码在Python IDLE shell中完美运行,到目前为止,在我创建的GUI中完美运行。我还没有学习 如何多线程进程,我想多线程我的所有函数,并将IDLE shell的输出和输入重定向到我的GUI中的三个文本框。到目前为止,我按下我的按钮,他们按预期工作, 按下按钮后的所有输入和输出都在IDLE shell中,我的下一步是将输入和输出提供给我的GUI中的文本框,这样我从IDLE shell到我的GUI的迁移就完成了,所以我的GUI 可以独立的'当然,独立于IDLE shell。三个文本框包括:1。用于文本输入,2。用于列出结果。和3.主动显示我的更新功能。我正在制作的节目是文件搜索 通过索引的方法,它在shell中工作正常,我正在迁移到我的GUI。在shell中,当我更新说文本文件时, 代码运行进出目录,生成系统上所有文本文件的列表并将其保存在文件中,它也可以用于视频,音频,可执行文件和图像文件。执行更新时,带有的文件 特定更新的相应文件扩展名在IDLE shell中实时显示,快速向下流式传输IDLE shell,这有望为文本框3的工作,这些结果将显示在 文本框三,因为它们被发现,用于反馈目的。文本框1是用户输入,要搜索的文件名,在IDLE shell中,在我的更新功能列表中搜索输入的名称,而不是 每次扫描系统。结果/(s)然后显示在shell中,这完美地工作,并且如果用户希望通过将找到的路径+文件名附加到适当的模块,则可以打开/播放/执行。这个 带我到文本框2,在shell中,显示搜索结果的文件,希望现在可以将它们迁移到文本框2,这是从现在开始显示搜索结果的地方。 我要问的例子我是如何实现从shell迁移到GUI的。我将按原样发布我的代码,也许有更多经验的人可以提供一些如何重新连接它的示例。 提前感谢您的任何帮助,本杰明

1 个答案:

答案 0 :(得分:0)

当用户使用IDLE运行代码时,发送到stdout的输出(使用sys.stdout.write或print(),文件保留为sys.stdout)出现在IDLE的tk(inter)Text小部件中Shell,因为IDLE使用将发送字符串发送到Text小部件的对象替换默认的sys.stdout对象。由于这通常涉及进程间通信,因此代码可能不会对您使用。

以下内容可能有所帮助:在文件中查找(grep)将找到的行放在OutputWindow中,其中write方法接受字符串并返回写入的字符数。这是3.x版本。

def write(self, s, tags=(), mark="insert"):
    if isinstance(s, (bytes, bytes)):  # convert to string if necessary
        s = s.decode(IOBinding.encoding, "replace")
    self.text.insert(mark, s, tags)  # insert into widget
    self.text.see(mark)  # make insertion visible
    self.text.update()  # update widget
    return len(s)  # return # chars written

我认为你可以为(py)qt的文本小部件重写这个。另一种方法是直接使用widget方法。