我有一个小的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
参数传递一个值,但它应该是什么?
答案 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):