OVH Cloud OVH Cloud

Activex -Wxpython

8 réponses
Avatar
Christophe M
Bonjour,

Je sais qu'on peut faire des classes (D)COM serveurs, et utiliser
d'autres objets (D)COM depuis python.
Je sais aussi que dans wxPython, on peut utiliser des activex.

Ce que je voudrais arriver à faire, c'est développer mon activex en
python, et pouvoir l'utiliser depuis VB par exemple. Je n'ai par contre
rien trouvé concernant ce point.

La seule différence étant que les activex sont des objets COM
"graphiques", j'imagine que ça doit être faisable. J'aurai voulu
utiliser wxpython, mais je ne suis pas sectaire, je m'adapterai aux
possibilités.

Si quelqu'un a une piste à explorer, ça serait sympa.
Merci

8 réponses

Avatar
App
Ce que je voudrais arriver à faire, c'est développer mon activex en
python, et pouvoir l'utiliser depuis VB par exemple. Je n'ai par contre
rien trouvé concernant ce point.

J'ai testé il y a quelques mois les exemples de Mark Hammond dans la

documentation de Python et cela a marché simplement.
J'utilise la documentation livrée avec ActivePython 2.3.

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !

Je suis très intéressé par cette possibilité. J'avais effectué quelques
recherches, sans rien trouver.

Pour info, les active-X ont, en supplément des objets COM, non seulement
l'aspect graphique, mais aussi une gestion évènementielle "publique". Et, ça
c'est souvent oublié.


Comme solution, en attendant mieux, j'utilise l'active-X Internet-explorer ;
j'y embarque mon code Python, et je détourne un des évènements prédéfinis.


Conclusion, si tu trouves quelques chose, informe ce newsgroup. Merci
d'avance.



@-salutations
--
Michel Claveau
Avatar
Christophe M.
App wrote:
Ce que je voudrais arriver à faire, c'est développer mon activex en
python, et pouvoir l'utiliser depuis VB par exemple. Je n'ai par contre
rien trouvé concernant ce point.



J'ai testé il y a quelques mois les exemples de Mark Hammond dans la
documentation de Python et cela a marché simplement.
J'utilise la documentation livrée avec ActivePython 2.3.




Attention que je parle bien ici d'objets graphiques, pas simplement des
objets COM. Ces derniers, je sais que ça marche.

Je vais tout de même me replonger dans cette doc, au cas ou j'aurai
loupé un truc.


Avatar
Christophe M.
Michel Claveau - abstraction méta-galactique non triviale en fuite
perpétuelle. wrote:

Bonjour !

Je suis très intéressé par cette possibilité. J'avais effectué quelques
recherches, sans rien trouver.

Pour info, les active-X ont, en supplément des objets COM, non seulement
l'aspect graphique, mais aussi une gestion évènementielle "publique". Et, ça
c'est souvent oublié.


Comme solution, en attendant mieux, j'utilise l'active-X Internet-explorer ;
j'y embarque mon code Python, et je détourne un des évènements prédéfinis.


Conclusion, si tu trouves quelques chose, informe ce newsgroup. Merci
d'avance.



@-salutations


Oui, oui, il y aussi effectivement la possibilité des événements.

Serait-il possible d'avoir des explications sur comment fonctionne ta
solution avec IE ?

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !

C'est un peu tordu, pas très "pythonesque" ; mais ça marche.

Voilà : j'ai un serveur COM (en Python + PyWin32), qui me permet de faire
exécuter des scripts Python depuis diverses applications. Parmi ces
applications, cela fonctionne avec Internet-Explorer + javascript.

Donc, j'ai fait une page HTML, avec un peu de javascript ; ce script fait
trois petites choses :
- ouverture du serveur COM Python en début de travail
- renvoi, au serveur COM d'un certain nombre d'évènements (onClick,
action des boutons, etc.)
- traitement des réponses du serveur COM Python (en fait le script
Python retourne une chaîne se caractères, sur laquelle on applique la
fonction javascript "eval")

Parmi les actions que le script Python induit, il y a (notamment) :
- changement du titre de la fenêtre
- changement du contenu de la "status bar"

Or, Internet Explorer existe aussi sous la forme active-X. Et il se trouve
que cet active-X gère ces deux évènements : "OnStatusBar" et "TitleChange"

Donc, lorsque je veux déclencher un évènement dans mon application qui
héberge l'active-X, il me suffit, depuis Python, de changer le contenu du
"document.title" (par exemple), pour que l'évènement se propage.


Au passage, je me sers maintenant (et aussi) d'Internet Explorer comme GUI.
Le principe de passer par COM permet d'économiser l'utilisation d'un serveur
HTTP, offre plus de possibilités d'échanges de données, et cela d'une
manière plus rapide.

J'espère t'avoir un peu résumé ma démarche.


@-salutations
--
Michel Claveau
Avatar
noone
Dans l'idée de lier Python avec le monde MS as-tu pensé à IronPython
http://ironpython.com/
http://www.python.org/pycon/dc2004/papers/9/

IronPython est un compilateur Python pour la plateforme .Net de Microsoft
(ou Mono sous Windows / Linux / MacOS X)

http://msdn.microsoft.com/netframework/
http://www.microsoft.com/downloads/details.aspx?FamilyID›3a2ca6-3647-4070-9f41-a333c6b9181d&displaylang=en
http://www.icsharpcode.net/OpenSource/SD/ http://www.go-mono.com/
http://www.monodevelop.com/

Tu compiles ton source Python avec IronPython.
Cela génère un code intermédiare interprétable par la machine
virtuelle .Net
Tu peux partager ce code avec des applis .Net (VB.Net, C#) que tu peux
réaliser gratos
puisque SharpDevelop est OpenSource
puisque le SDK .Net est gratuit

Cordialement
Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !


Le problème, avec IronPython, c'est qu'il y a encore beaucoup de chemin à
faire, pour que cette solution soit vraiment utilisable. Par exemple, tente
de faire un simple :
import string
a='abc'
print upper(a)

J'attend avec impatience les progrès d'IronPython, pour regarder à nouveau.
Dans le même genre, on peut regarder Boo ? http://boo.codehaus.org



Autre élément, IronPython ne permet pas de créer des active-X.


Bonne journée
--
Michel Claveau
Avatar
Christophe M
wrote:
Dans l'idée de lier Python avec le monde MS as-tu pensé à IronPython
http://ironpython.com/
http://www.python.org/pycon/dc2004/papers/9/

IronPython est un compilateur Python pour la plateforme .Net de Microsoft
(ou Mono sous Windows / Linux / MacOS X)

http://msdn.microsoft.com/netframework/
http://www.microsoft.com/downloads/details.aspx?FamilyID›3a2ca6-3647-4070-9f41-a333c6b9181d&displaylang=en
http://www.icsharpcode.net/OpenSource/SD/ http://www.go-mono.com/
http://www.monodevelop.com/

Tu compiles ton source Python avec IronPython.
Cela génère un code intermédiare interprétable par la machine
virtuelle .Net
Tu peux partager ce code avec des applis .Net (VB.Net, C#) que tu peux
réaliser gratos
puisque SharpDevelop est OpenSource
puisque le SDK .Net est gratuit

Cordialement




L'idée, c'était surtout de pouvoir attaquer un premier développement en
Python pour ma boite, histoire de commencer à le faire connaitre de mes
collègues. Pour ensuite passer à d'autres développements.

Evidemment, j'ai pas choisi le plus facile, il est évident qu'il y a
plein d'autres champs d'action possible plus facile en python.

Sinon, je pourrais juste simplement faire mon activex en C#, qui est a
mon sens plus adapté pour développer en .NET
Mais je croyais que MS voulait laisser tomber les activex, je sais donc
pas si c'est possible d'en faire en .NET

Et pour info, le développeur de IronPython travaille maintenant chez MS,
pour faire évoluer ce "compilateur" (ou du moins un environnement
"dynamique" sous .NET ) plus rapidement. Les évolutions devraient donc
arriver...