PyGTK和Glade 3 - 如何获得' print'到TextView

时间:2013-05-26 00:59:17

标签: python textview pygtk glade

我在编程方面很陌生,即使是用英语发言...所以我只想在这里解释我的问题:

我正在使用Glade 3构建一个GUI,它需要在TextView或Glade 3的其他一些Widgets中显示'print'的所有输出,

我的python代码是这样的:

#ab.py
def a():
    print 'AAAAA'

def b():
    print 'BBBBB'

#button_c.py
def button_c():
    if:
      print '11111'
    elif:
      print '22222'
    else:
      print '33333'

    a()
    b()

if __name__ == '__main__':

    button_c()

我正在尝试使用这样的代码来实时显示对象textview1中'print'的所有输出,就像Python解释器那样:

    def on_button_c_clicked(self, widget):
        button_c()
        self.builder.get_object("textview1").get_buffer().set_text(??????)

我已经google了很多,看到了关于sys.stdout,thread,subprocess和textbuffer的东西,但我仍然无法弄明白,我现在唯一的想法就是改变所有'print'parte of the代码为:

    def a():
        # print 'AAAAA'
        output_gui = 'AAAAA'
        print output_gui
        self.builder.get_object("textview1").get_buffer().set_text(output_gui)

我还没有尝试过,因为必须有另一种更聪明的方式,不是吗?

1 个答案:

答案 0 :(得分:0)

您可以查看Codimension(python IDE)源代码。有一个解决方案。所有使用python编写的源代码。

更接近:

如果安装了.deb包(我有Debian linux) - /usr/share/codimension/ui/mainwindow.py,类CodimensionMainWindow,__ init __(),或者来自tarball的同一个文件。它使用Redirector(自编,我认为)模块(非常小)也 - /usr/share/codimension/ui/redirector.py