pygtk только для чтения gtk.TextView (игнорировать щелчки мышью)

1

Мне нужен способ сделать gtk.TextView игнорировать щелчки мыши в графическом интерфейсе pygtk.

Я установил свойство "editable" в false, чтобы ввести вход пользователя, но он все еще отвечает за щелчки мыши.

Этот текст отображает некоторые результаты из других команд, поэтому, если пользователь нажимает на него в любом месте, он перемещает курсор в выбранное местоположение. Мне нужно это избежать.

Мне нужно что-то похожее на результаты set_property ( "чувствительные", "ложные" ), но без пометки виджета. Он просто должен сидеть и игнорировать все виды пользовательского ввода.

У кого-нибудь есть идеи, как это сделать?

Спасибо заранее.

Теги:
gtk
pygtk

3 ответа

2
Лучший ответ

Нашел ответ. Для тех, кто интересуется, вот оно.

По правде говоря, нет способа заставить его игнорировать щелчки мыши. Что вы можете сделать, если хотите просмотреть текстовое представление только для чтения, вы устанавливаете свойство "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')

НТН

  • 0
    Для дальнейшего использования вы обычно хотите использовать метод insert а не метод insert_at_cursor любом случае, именно по этой причине: вы никогда не сможете определить, где будет находиться курсор.
8

То, что вы сделали, лучше для ваших целей. Однако для справки в будущем, если вы действительно хотели просто нажать кнопку, вам нужно подключить TextView к button-press-event так:

tview.connect('button-press-event', tviewClicked)

и определите функцию обработчика так, чтобы он возвращал True:

def tviewClicked(widget,event):
    return True

Возврат True из функции обработчика говорит GTK не передавать его ни на что другое, поэтому клик никогда не будет отправлен на TextView. Пользователь больше не сможет его нажимать.

Я знаю, что это старый вопрос, но, возможно, это поможет кому-то еще, кто приходит на эту страницу.

3
textview.set_property('editable', False)
textview.set_property('cursor-visible', False)

Если вы даже хотите разрешить пользователю выбирать текст или щелкнуть правой кнопкой мыши и выбрать Копировать... (что не очень полезно для консоли), вы должны перезаписать button-press-event, как писал @Derek Redfern.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню