2012-01-29 3 views
2

statusicon이있는 작은 PyGTK 프로그램이 있습니다. 상태 아이콘을 왼쪽 클릭하면 TextView가있는 창이 나타나야하며 미리 정의 된 텍스트가 TextView 위젯에 표시되어야합니다. 내 문제는 내가 창을 만드는 메서드에 매개 변수로 표시 할 텍스트를 전달하는 방법을 모르겠다. 문제없이 TextView를 사용하여 윈도우를 만들 수 있지만 텍스트를 삽입 할 수는 없습니다.PyGTK. 상태 아이콘을 왼쪽 클릭하면 윈도우의 TextView 위젯에 텍스트를 표시하는 방법

import gtk 
import keybinder 

class PyPPrinter(object): 
    def __init__(self): 
     self.staticon = gtk.StatusIcon() 
     self.staticon.set_from_stock(gtk.STOCK_INDEX) 
     self.staticon.set_visible(True) 
     self.staticon.connect('activate', self.browser(output_text = 'text')) 
     gtk.main() 

    def browser(self, window, output_text): 
     browser = gtk.Window() 
     browser.set_usize(600, 500) 
     textbox = gtk.TextView() 
     text = gtk.TextBuffer() 
     text.set_text(output_text) 
     textbox.set_buffer(text) 
     browser.add(textbox) 
     browser.show_all()   

if __name__ == '__main__': 
    PyPPrinter() 

이 코드는 나에게 예외를 제공합니다 : 여기 내 코드입니다 TypeError: browser() takes exactly 3 arguments (2 given). 아마도 window 매개 변수의 값을 전달해야하지만 어떻게해야합니까?

답변

2

두 가지 변종 :

self.staticon.connect('activate', self.browser(output_text = 'text')) 

에 :

self.staticon.connect('activate', self.browser, 'text') 

또는 변경 처리기 - 서명 :

def browser(self, window, output_text): 

에 :

변경 부분을 연결

def browser(self, window):