Bonjour à tous,

Pour la petite histoire:
je suis en train de programmer un Bot pour megaupload, qui permet de gérer une liste de téléchargement.
le bot en lui même fonctionne, pour les intéressés: http://botmu.sourceforge.net
Topic Ubuntu-fr.org: http://forum.ubuntu-fr.org/viewtopic.php?id=449708


Mon problème:
Je suis en train d'implémenter une fonction de repérage de copier/coller pour intégrer automatiquement un lien qu'on aurait copié, via, par exemple, firefox
j'ai fais un test sur lequel ça marchait très bien, mais lorsque j'intègre ma class a mon projet j'ai une erreur à cause de "import gtk":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:127: RuntimeWarning: PyOS_InputHook is not available for interactive use of PyGTK
  set_interactive(1)
quelqu'un sait d'où ça pourrait venir ?
* ça viendrai pas du fait que pyqt et pygtk sont pas copain ? pasque je vois pas ce qui peu déconner ^^
j'ai vu qu'il y avait une autre methode pour lire le clipboard, je vais regarder ça en attendant.
EDIT: ah bah non, j'ai trouver un autre moyen mais ça passe par la ligne de commande sur un programme non installé par defaut, Si quelqu'un à une autre solution pour récupéré la valleur du clipboard sans passé par gtk, ça me va aussi


ma class clipboard:
* j'ai également tenter de rajouter "import pygtk pygtk.require('2.0')" mais ça ne change rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import threading
import time
 
try:
    import gtk
except:
    pass
 
try:
    import win32clipboard
    import win32con
except:
    pass
 
 
class WinClipboard(threading.Thread):
    def __init__(self, args=None, kwargs=None):
 
        threading.Thread.__init__(self)
 
        self.stop = False
        self.clipboardValue=""
 
 
    def run(self):
        while not self.stop:
            clipboard = win32clipboard.OpenClipboard() 
            tmp = win32clipboard.GetClipboardData(win32con.CF_TEXT)
            if(tmp != self.clipboardValue):
                self.clipboardValue = tmp
                if("http://megaupload.com?d=" in self.clipboardValue):
                    print self.clipboardValue
            time.sleep(2)
 
 
class LinuxClipboard(threading.Thread):
    def __init__(self, args=None, kwargs=None):
 
        threading.Thread.__init__(self)
 
        self.stop = False
        self.clipboardValue=""
 
 
    def run(self):
        while not self.stop:
            clipboard = gtk.clipboard_get()
            tmp = clipboard.wait_for_text()
            if(tmp != self.clipboardValue):
                self.clipboardValue = tmp
                if("http://megaupload.com?d=" in self.clipboardValue):
                    print self.clipboardValue
            time.sleep(2)
mon test, qui fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
from clipboard import *
 
class test():
    def __init__(self):
        t = LinuxClipboard(self)
 
        t.start()
 
test()
ma class (le debut (seulement __init__) dans laquel ça plante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
# Inclusions des modules générique
# Native
import os, platform
import re
import time
# Pyqt4
from PyQt4.QtCore import *
from PyQt4.QtGui import *
# Perso
from download import *
from options import *
from clipboard import *
 
# Inclusion optionel en fonction de la plateforme
try:
    import _winreg
except:
    pass
 
#############################################################################
class Fenetre(QWidget):
    #========================================================================
    def __init__(self, parent=None):
 
        if not os.path.isfile("setup.ini"):
            paramfile = open("setup.ini", "w+")
            paramfile.close()
 
        #About values
        self.aboutLogo = 'icons/BotMU.png'
        self.aboutAuthor = u'Raphaël Perraudeau'
        self.aboutAlias = u'xXKirastarotHXx'
        self.aboutMail = 'rperraudeau@gmail.com'
        self.aboutVersion = 'v0.97b'
        self.aboutDescription = u'BotMU est un petit logiciel qui permet de lancer une liste de téléchargements via megaupload'
        self.aboutWebSite = 'http://botmu.sourceforge.net/'
 
        # Definition des variables d'environement en fonction de l'os
        # Linux:
        if platform.system() == 'Linux':
            self.userPersonalPath = os.path.expanduser("~")
            #self.clipboard = LinuxClipboard(self)
 
            #self.clipboard.start()
 
        # Windows:
        # Fonctionne avec XP, à tester avec Vista/Seven
        if platform.system() == 'Windows':
            key = _winreg.OpenKey( _winreg.HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders',0, _winreg.KEY_READ)
            (valeur,typevaleur) = _winreg.QueryValueEx(key,'Personal')
            _winreg.CloseKey(key)
            self.userPersonalPath = valeur
            #self.clipboard = WinClipboard(self)
 
            #self.clipboard.start()
Voila voila,
merci d'avance