2013-05-26 70 views
2

我在編程很新,即使在講英語的..所以我只是想解釋一下我的問題就在這裏:的PyGTK和Glade的3 - 如何獲得「打印」輸出到TextView的

我建設使用林地3 GUI,這就需要顯示一個TextView或一些小工具格萊德3的其他「打印」的所有輸出,

我的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輸出的實時,就像Python解釋器所做的:

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

我GOOGLE很多,並看到有關sys.stdout,線程,子進程和文本緩衝區的東西,但我仍然無法弄清楚,我現在唯一的想法是將代碼中的所有'print'部分更改爲:

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

我還沒有嘗試過這一點,因爲必須有更聰明的方法,不是嗎?

回答

0

你可以看看Codimension(python IDE)源代碼。有一個解決方案。所有使用python編寫的源代碼。

更接近:

如果.deb軟件包(我有Debian的Linux)的安裝 - /usr/share/codimension/ui/mainwindow.py,類CodimensionMainWindow,__ __的init(),或在同一個文件從壓縮包。它使用重定向器(我自己寫的,我認爲)模塊(非常小)也 - /usr/share/codimension/ui/redirector.py