PyGTK的。左键单击状态图标后,如何在窗口的TextView小部件中显示文本

时间:2012-01-29 14:15:02

标签: python gtk pygtk gtktextview

我有一个小的PyGTK程序,它有一个statusicon。左键单击statusicon后,将出现一个带有TextView的窗口,并且应在TextView小部件中显示预定义的文本。我的问题是我不知道如何传递文本作为创建窗口的方法的参数显示。我可以使用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参数传递一个值,但它应该是什么?

1 个答案:

答案 0 :(得分: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):