pygtk只读gtk.TextView(让它忽略鼠标点击)
问题描述:
我需要一种方法来使gtk.TextView在pygtk GUI中忽略鼠标点击。pygtk只读gtk.TextView(让它忽略鼠标点击)
我已将“可编辑”属性设置为false以预先进行用户输入,但仍对鼠标单击作出响应。
此文本视图显示其他命令的一些输出,因此如果用户在其上点击任何地方,它将光标移动到单击的位置。我需要避免这种情况。
我需要类似于set_property('sensitive',False)的结果,但不会灰色化小部件。它只需要坐在那里,忽略各种用户输入。
任何人有任何想法如何做到这一点?
在此先感谢。
答
找到了答案。对于任何有兴趣的人来说,它就是这样。
事实是,没有办法让它忽略鼠标点击。当你想要一个只读类型的文本视图时,你可以做什么,你可以将'editable'属性设置为False。这会忽略键盘输入。
另一件事是当插入文本时,您想要使用insert
方法而不是insert_at_cursor
方法。
样品
tview = gtk.TextView()
tview.set_property('editable', False)
# Insert text at the end on the textview.
buffer = tview.get_buffer()
buffer.insert(buffer.get_end_iter(), 'This text goes at the end of the existing text')
HTH
答
你做什么是你的目的更好。对于未来的参考,不过,如果你真的想只是阻止点击,你会希望将TextView
连接到button-press-event
像这样:
tview.connect('button-press-event', tviewClicked)
,并定义了处理函数,以便它返回True
:
def tviewClicked(widget,event):
return True
从处理函数返回true告诉GTK不要将它传递给其他任何东西,所以点击从不会被发送到TextView
。用户将无法再点击它。
我知道这是一个老问题,但也许它会帮助其他人来到这个页面。
答
textview.set_property('editable', False)
textview.set_property('cursor-visible', False)
如果你连想允许用户选择文本或右键单击并选择复制...(这是不是控制台一个好主意),你应该覆盖button-press-event
作为@Derek雷德芬写道。
为了将来的参考,无论如何,您通常都希望使用insert方法而不是insert_at_cursor方法,因为您永远无法知道光标的位置。 – ptomato 2011-02-08 00:19:27