PyGTK. Как отобразить текст в виджете TextView окна при щелчке левой кнопкой мыши на значке состояния - PullRequest
2 голосов
/ 29 января 2012

У меня есть небольшая программа PyGTK, которая имеет статус.При щелчке левой кнопкой мыши по значку состояния должно появиться окно с 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 Ответ

2 голосов
/ 29 января 2012

Два варианта:

Изменить соединительную деталь:

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):
...