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

+0

为了将来的参考,无论如何,您通常都希望使用insert方法而不是insert_at_cursor方法,因为您永远无法知道光标的位置。 – ptomato 2011-02-08 00:19:27

你做什么是你的目的更好。对于未来的参考,不过,如果你真的想只是阻止点击,你会希望将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雷德芬写道。