我在编程方面很陌生,即使是用英语发言...所以我只想在这里解释我的问题:
我正在使用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)
我还没有尝试过,因为必须有另一种更聪明的方式,不是吗?
答案 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