Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/10/2009, à 23:18

Aurel07

[PyGTK] gtk.Entry et methode select_region [Résolu]

Bonsoir,

J'utilise une boite Entry, et je veux y faire une auto-completion maison dedans. Pour ca, je voudrais que lorsque la touche "Tab" est pressée, je voudrais que le terme de completion s'affiche, mais que seule la partie rajoutée par le programme soit sélectionnée.

Exemple :
je tape "ge", qui est le début de "gedit". En appuyant sur "Tab", "gedit" s'affiche, mais il est selectionné en entier par défaut, alors que je voudrais que seul "dit" soit sélectionné.

J'ai essayé d'utiliser la methode select_region, mais ca marche pas :

def on_Tab_pressed(self):
    liste_completion=self.completion()
    self.entry.set_text(liste_completion[0])  #seule la premiere completion est affichée
    self.entry.select_region(len(entry_text), -1)  #où entry_text est le texte entré au clavier avant la completion

J'ai bien sur testé avec un vrai entier (genre 2) à la place de len(entry_text), et ça ne marche pas mieux. Par contre, si je fais le select_region à un autre moment, ca marche, sauf si le texte de l'entry a été modifié juste avant.

def on_Tab_pressed(self):
    entry.set_text("coucou")
    
def on_Up_pressed(self):
    entry.select_region(2, 4)

marche (quand on appuie sur Up).

Et un truc du style :

entry.set_text("coucou")
time.sleep(1)
entry.select_region(2, 4)

ne marche pas mieux...

Est ce que quelqu'un a deja rencontré ce probleme ?
Bug de l'API GTK, ou je suis trop un noob ???

Dernière modification par Aurel07 (Le 12/10/2009, à 23:46)

Hors ligne

#2 Le 12/10/2009, à 13:38

Anium

Re : [PyGTK] gtk.Entry et methode select_region [Résolu]

Bonjour,

Il existe déjà une implémentation des complétions au sein des Entry. Elles ne te suffisent pas ?

Hors ligne

#3 Le 12/10/2009, à 19:11

Aurel07

Re : [PyGTK] gtk.Entry et methode select_region [Résolu]

Ben je suis pas contre, mais je suis pas arrivé à la faire marcher comme je voulais.
Je veux faire un applet pour le panel de gnome en fait (comme mini-commander, qui n'existe plus), et pour ca, je voudrais que les propositions de completion puissent cycler dans l'Entry sans afficher une liste, et je n'ai pas trouver comment faire (genre j'appuie sur Tab et ca passe à la proposition suivante). Il semblerait que Entrycompletion ne fonctionne qu'avec des listes.
J'ai eu beau chercher dans la doc, je ne suis pas arrivé a trouver mon bonheur, donc je veux bien que tu m'indique la solution, si tu l'as !

Dernière modification par Aurel07 (Le 12/10/2009, à 19:12)

Hors ligne

#4 Le 12/10/2009, à 23:46

Aurel07

Re : [PyGTK] gtk.Entry et methode select_region [Résolu]

Got it !!

En fait, le probleme, c'est que la touche Tab que je veux utiliser sert par défaut a tout sélectionner. Donc il faut empêcher le signal "keypress_Tab" d'aller plus loin que mon callback perso. Pour ca, il suffit de retourner True à la fin dudit callback :

def on_Tab_pressed(self):
    entry.set_text("coucou")
    entry.select_region(2, 4)
    return True

C'était pas si compliqué que ça, mais quand même, j'ai appris un truc...

Hors ligne