Bonjour à tous,

et en particulier aux experts de pyGTK, parce que j'ai beau me plonger dans la doc, je nage ...

Je vous soumet mon problème, dites-moi ce que vous en pensez:

J'ai une appli en Python qui tourne bien, sous Windows, avec la particularité de gérer l'interface d'un autre logiciel, propriétaire, en Flash (ne me demandez pas pourquoi nous n'avons pas fait appel au dit propriétaire pour modifier son logiciel ... Amour du bricolage sans doute) via l'utilisation de win32.dll. En résumé, je (en fait mon appli, ctoutautomatik) clique sur les boutons de l'interface Flash après divers traitements en Python.

Seulement voilà, dernier rebondissement en date, nous allons changer tout le parc informatique pour du Linux, et on me demande gentiment de bien vouloir refaire le truc pour que ça marche sous Ubuntu. Très bien. Sauf qu'avec ma win32.dll, je suis marron ...

J'ai donc cherché comment remplacer tout ça (il y avait d'autres incompatibilités dont je vous fait grâce), et c'est peu de dire que ça n'est pas simple! Autant je ne trouve pas beaucoup de qualités à Windows, autant la win32.dll, c'est bien sympa.

Or donc, avant de me lancer dans l'étude du serveur X au risque de n'en pas revenir vivant, j'ai jeté un oeil sur les pyGTK, pyQT et autres wxPython. Et là, bonheur, j'ai pu faire tout ce que je faisais avant sous Windows, voir même en plus simple. Tout? non, car une partie résiste encore et toujours à la libération: le lien Python/Flash. J'ai bien vu que pyGTK gère des "events", mais c'est là que je commence à sécher. J'ai écrit le bout de code de test suivant, dont le principe est très simple: Un clic sur le bouton "test" écrit "test" dans la console, un clic sur "message" écrit ... "message"! mais oui, madame! Et je voudrais qu'un clic sur "test" simule également un clic sur "message", en utilisant les coordonnées du bouton (ben oui, je pourrais appeler directement la fonction correspondante, mais ce serait trop facile ...).

Voici mon œuvre (le bazar est dans la fonction test):
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
import gtk
 
class TinyGecko:
    def test(self, widget):
        print "test"
        event = gtk.gdk.Event(gtk.gdk.BUTTON_PRESS)
        event.button=1
        event.x=100.0
        event.y=10.0
        event.send_event=True
        self.window.emit("button_press_event",event)
 
    def message(self, widget):
        print "message"
 
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
 
    def __init__(self):        
        self.window = gtk.Window()  
        self.window.connect("delete_event", self.delete_event)
 
        self.box1 = gtk.HBox(False, 0)
        self.window.add(self.box1)
 
        self.button1 = gtk.Button("Test")
        self.button1.connect("clicked",self.test)
        self.box1.pack_start(self.button1, True, True, 0)
 
        self.button2 = gtk.Button("Message")
        self.button2.connect("clicked",self.message)
        self.box1.pack_start(self.button2, True, True, 0)
 
        self.window.show_all()
 
if __name__ == '__main__':
  TinyGecko()
  gtk.main()
voilà voilà ...

Y'a-t-il une âme charitable dans l'assistance pour me dire si:
1°/ Je suis sur la bonne voie, ou si c'est mort d'avance?
2°/ Si oui, où est la cou....?

D'avance merci!
Openmind