Как сделать правильную текстовую запись PyGTK только для чтения? - PullRequest
4 голосов
/ 27 мая 2011

Я пытаюсь создать виджет с коротким текстовым выводом, который пользователь должен иметь возможность копировать, но не изменять. Вот что я придумал:

entry = gtk.Entry()
entry.set_property("editable", False)
entry.unset_flags(gtk.CAN_FOCUS)

Это работает, но запись все еще выглядит как редактируемая, и это выглядит плохо с точки зрения пользователя. Вместо этого я попытался entry.set_sensitive(False), но это предотвращает копирование и делает его полностью отключенным.

Я хотел бы знать, как сделать правильную текстовую запись только для чтения, она неактивна, но все еще активна.

Редактировать: Вот изображение того, о чем я говорю, хотя не GTK (и я работаю в среде GNOME).

Редактировать 2: начинает казаться, что нет правильного способа сделать это с GTK, если кто-то может подтвердить это, я отмечу вопрос решенным.

Ответы [ 3 ]

6 голосов
/ 29 мая 2011

Вы можете использовать Label, который можно выбрать и в режиме переноса (если текст был более одной строки)

label = gtk.Label('multi line text')
label.set_selectable(True)
label.set_line_wrap_mode(True)
2 голосов
/ 27 мая 2011

Я обычно выключаю скошенную рамку, чтобы она выглядела больше как метка, но все еще можно выбрать.

GTKEntry without frame.

(На рисунке справа от знака равенства есть прямоугольник. Здесь трудно увидеть, но в моей программе всегда есть текст, так что это вполне понятно.)

Я делаю это в Glade, но метод GTKEntry.set_has_frame () .

0 голосов
/ 28 мая 2011

Чтобы сделать его серым, попробуйте entry.modify_text().

...