IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

Presse-papier - wait_for_text()


Sujet :

GTK+ avec Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut Presse-papier - wait_for_text()
    Bonjour à tous,

    Voici mon problème. J'essaie d'utiliser la méthode wait_for_text() de la classe Clipboard (gtk.Clipboard) mais apparemment elle n'est pas synchrone, ce qui est en contradiction avec la doc de la classe. J'ai sûrement dû oublier quelque chose mais je ne sais pas quoi. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import pygtk
    import gtk
     
    cb = gtk.clipboard_get()
    text = cb.wait_for_text()
     
    print text
    Quelqu'un aurait une idée?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tel quel ton code retourne immédiatement le contenu du presse-papier.

    Tu aurais voulu une fonction qui intervienne uniquement si le contenu du presse-papier change ?

    Ca existe avec Qt, pour GTK je ne sais pas mais si ça existe ce doit plutôt être du coté des signaux.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    En effet, sou GTK, si l'on veut qui fonction s'appelle automatiquement pour une tache précise, il faut passer par les signaux, voici le signal qui correspond à ce que vous recherchez (je pense ^^) :

    Signals
    The "owner-change" gtk.Clipboard Signal

    def callback(clipboard, event, user_param1, ...)

    clipboard :
    the object that received the signal.

    event :
    the event marking the ownership change.

    user_param1 :
    the first user parameter (if any) specified with the connect() method

    ... :
    additional user parameters (if any)
    Note

    This signal is available in GTK+ 2.8 and above.

    The "owner-changed" signal is emitted when the owner of the clipboard is changed.
    En gros, voila le code, je n'ai pas testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def fonction():
        print cb.wait_for_text()
     
    clipboard = gtk.Clipboard(display=gtk.gdk.display_get_default(), selection="CLIPBOARD")
    # OU
    clipboard = gtk.clipboard_get()
    clipboard.connect("owner-change", fonction)
    gtk.main() # Sans sa, le programme devrait se fermer
    Tenez nous au courant et bon courage à vous

    Mickael

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Tout d'abord merci pour vos réponses!
    En fait ce que vous me proposez ce sont des solutions asynchrones si je ne me trompe?
    J'aurai voulu que le wait_for_text() bloque le thread jusqu'à ce qu'un nouveau 'copier' arrive dans le presse-papier.
    Finalement je m'en suis sorti autrement. Ce n'est pas ce qui a de plus joli mais ça fonctionne. Je vérifie le contenu du presse-papier toutes les secondes jusqu'à ce qu'on tappe sur la touche ENTER. Si le contenu change, je le récupère. Ensuite je supprime les doublons en passant par un set...

    Bon après-midi!

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Un petit résolu serait sympa

    Meme si je n'ai pas vu le code, pour ceux qui souhaiterai utiliser le même principe, vous devez passer par gobject :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import gobject
     
    def fonction():
        #verifier le contenu du clipboard
        if change : return False
        else: return True
     
    gobject.timeout_add(1000, fonction)
    A bientot a tous

Discussions similaires

  1. [VBA] Vider le presse papier
    Par Kelyane dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/10/2003, 12h05
  2. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  3. [VBA-E] Vider le presse-papier
    Par tinej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2002, 09h33
  4. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46
  5. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo