我需要一种方法让gtk.TextView忽略pygtk GUI中的鼠标点击。
我已将'editable'属性设置为false以提供用户输入,但它仍然会响应鼠标点击。
此textview显示其他命令的一些输出,因此如果用户单击其中的任何位置,它会将光标移动到单击的位置。我需要避免这种情况。
我需要类似于set_property('sensitive',False)结果的东西,但不会使窗口小部件变灰。它只需要坐在那里忽略各种用户输入。
任何人都有任何想法如何实现这一目标?
提前致谢。
答案 0 :(得分:8)
您所做的更适合您的目的。但是,为了将来参考,如果您真的想要阻止点击,您可能希望将TextView
连接到button-press-event
,如下所示:
tview.connect('button-press-event', tviewClicked)
并定义处理函数,使其返回True
:
def tviewClicked(widget,event):
return True
从处理函数返回True告诉GTK不要将其传递给任何其他东西,因此点击永远不会被发送到TextView
。用户将无法再点击它。
我知道这是一个老问题,但也许它会帮助其他人来到这个页面。
答案 1 :(得分:3)
textview.set_property('editable', False)
textview.set_property('cursor-visible', False)
如果您甚至想要允许用户选择文本或右键单击并选择复制...(这对于控制台来说不是一个好主意),您应该覆盖{@ 1}},如@Derek Redfern所写。
答案 2 :(得分:2)
找到答案。对于任何有兴趣的人来说,就在这里。
事实是,没有办法让它忽略鼠标点击。当您想要只读类型的文本视图时,可以执行的操作是将“可编辑”属性设置为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