4 votes

Comment faire une entrée de texte PyGTK en lecture seule ?

J'essaie de créer un widget qui contient un court texte que l'utilisateur doit pouvoir copier, mais pas modifier. Voici ce que j'ai trouvé :

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

Cela fonctionne, mais l'entrée donne toujours l'impression d'être modifiable, ce qui est mauvais du point de vue de l'utilisateur. J'ai essayé entry.set_sensitive(False) à la place, mais cela empêche la copie et donne l'impression qu'elle est complètement désactivée.

J'aimerais savoir comment créer une entrée de texte en lecture seule, qui soit grisée mais toujours active.

Edit : Voici une image de ce dont je parle, bien que ce ne soit pas GTK (et je travaille dans un environnement GNOME).

Edit 2 : Il semble qu'il n'y ait pas de bonne façon de faire cela avec GTK, si quelqu'un peut le confirmer, je marquerai la question résolue.

6voto

ilius Points 1291

Vous pouvez utiliser un Label qui est sélectionnable et en mode "wrap" (si le texte était sur plus d'une ligne)

label = gtk.Label('multi line text')
label.set_selectable(True)
label.set_line_wrap_mode(True)

2voto

detly Points 11267

J'ai l'habitude de désactiver le cadre biseauté, de sorte qu'il ressemble davantage à une étiquette mais reste sélectionnable.

GTKEntry without frame .

(Dans l'image, il y a une case à droite du signe égal. C'est difficile à voir ici, mais dans mon programme, il y a toujours du texte dedans, donc c'est assez clair).

Je fais ça dans Glade, mais la méthode est la suivante GTKEntry.set_has_frame() .

0voto

ptomato Points 24461

Pour le rendre gris, essayez entry.modify_text() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X