PyGTK. 如何在状态图标左键单击时在窗口的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
参数传一个值,但这个值应该是什么呢?
1 个回答
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):