0

有没有办法将所有 IDLE 输出重定向到 tkinter GUI,或者对 IDLE 输出做些什么?我想http.server在 tkinter GUI 中显示该模块的所有 IDLE 输出,以监视 Web 服务器上发生的所有事情。这是否可以通过一些简单的功能/命令来实现,或者这是否涉及编辑 IDLE lib 文件?

之前问过类似的问题,我想将整个 IDLE/python shell 嵌入到我的监控程序中,但这对于最新的 python 版本似乎是不可能的。

编辑:

from tkinter import *
import sys, time, threading
global TXT
root = Tk()
TXT = Text(root, font="Arial")
TXT.pack(fill=X)

class RedirectText(object):

    def __init__(self, TXT):
        self.out = TXT

    def write(self, string):
        TXT.insert(END, string)
sys.stdout = RedirectText(TXT)

for i in range(10):
    print("test", i+1)

def thread():
    print("Delayed")
    threading.Timer(1, thread).start()

threading.Timer(1, thread).start()
root.mainloop()

删除了所有错误代码,现在有了这个。不会写任何与系统相关的东西,只写print()函数内部的东西。仍在寻找一种将insert所有系统输出到文本小部件的方法。

4

2 回答 2

1

有关将标准输出重定向到 Tkinter 文本小部件的示例,请参阅此答案。

于 2013-07-02T19:41:32.860 回答
0

你不想重定向空闲输出,你想重定向系统标准输出。这是我以前用于 WXPython 的一些东西:

class RedirectText(object):
    def __init__(self, TextCtrl):
        self.out = TextCtrl

    def write(self, string):
        wx.CallAfter(self.out.WriteText, string)

然后初始化:

 import sys
 sys.stdout = RedirectText(log)

其中 log 是 WX TextCtrl 小部件。

于 2013-07-02T19:04:38.183 回答