Forum Programmation.python Probleme de portabilité win32/Linux (wxPython)

Posté par  .
Étiquettes : aucune
0
12
avr.
2005
Bonjour à tous !

Je suis en train de développer une application avec wxPython histoire de faciliter la vie de mes utilisateurs ... malheureusement je rencontre un petit probleme ... Y en fallait bien un :).

Je m'explique ...
Je développe sous Linux et tout fonctionne niquel mon interface tourne au poil, j'arrive à en faire ce que je veux ... le problème survient quand ... je teste la même appli sous winXP, python étant censé être pleinement portable j'y suis allé confiant ;) et là manque de bol mon appli s'exécute, mais je ne peux faire aucune action sur mes boutons, j'ai l'impression d'avoir un bête screenshot de mon application sous les yeux :( .

Si l'un d'entre vous pouvais me dépanner je lui en serait bien reconnaissant, je n'ai pas vraiment envie de développer deux codes ...

Pour infos j'utilise la même version de python (2.4.1) sur les deux plateformes, par contre sous linux j'ai un wxPython 2.5.3 et sous win un wxPython 2.5.5, mais bon, avec des numéros de versions mineurs je ne pense pas que cela vienne de là ...

D'avance merci à vous tous !
  • # re

    Posté par  (site web personnel) . Évalué à 1.

    Cela metait arriver quand j'avais mis une image de fond a la fenetre en dessous des boutons, ca marcher sur linux et sur windows aucun bouton etait cliquable..
  • # Utilisation d'un panel ?

    Posté par  . Évalué à 1.

    Je crois me souvenir que pour faire une interface wxPython sous windows, j'ai du utiliser un panel (puis des box dans le panel) pour que les boutons fonctionnent.

    Tu utilises un outil pour créer l'interface ? c'est du fait main ?
  • # Bigre ...

    Posté par  . Évalué à 1.

    J'ai essayé de virer la charte graphique rien y fait, pour la création de l'interface je suis passé par Boa-constructor, bien foutu et dispo sur les deux OS ...
    Par contre j'ai remarqué une différence au niveau de la definition de la librairie wxPython ...

    Sous linux: Boa fait un "from wxPython.wx import *"
    Sous windows: "import wx"

    De la même facon les noms de classes et de methodes different sensiblement ... Je sais que l'espace de nom de wxPython a été revu mais tout de même ...
  • # ah ... wx

    Posté par  (site web personnel) . Évalué à 2.

    Je développe aussi des applis python + wx

    bien que python soit extremement portable entre tes 2 environnements !
    Ce n'est vraiment pas le cas pour WX ! Et c'est vraiment dommage ;-(
    Tu as plus de chances que ça fonctionne correctement si tu développes sous win, et que tu tentes sous gnu/linux après !
    Mais il y a toujours des ajustements à faire ...

    Il n'y a pas de secret ou recette toute faites, il y a juste l'experience qui te fait apprendre que tel ou tel fonctionnalité doit être coder comme celà ou comme ceci, pour qu'elle fonctionne à l'identique sur les 2 plateformes ! La doc de wxpython y faisant qques fois (trop rarement) référence.

    WX est nivellé par le bas à cause des mfc de windows. Donc, il faut pas trop en demander à wx, et de manière générale, il faut rester très simple ...

    On me conseille toujours pygtk pour une meilleure intégration. Mais je pense que des couches comme WAX vont devenir necessaire pour une bonne utilisation de wx en tant que multi-plateformes, sans trop de soucis. (pythoncard dans une moindre mesure est assez bluffant et multiplateforme aussi)
  • # le plus simple c'est d aller sur wxwidgets.org

    Posté par  . Évalué à 1.

    bonjour,
    le plus simple est de poser la question sur le forum de wxwidgets.org en python, désolé je prog en C++ et ça a tjs fonctionner les prog sur les différents systèmes.
    A+
  • # Damned !

    Posté par  . Évalué à 1.

    Bonjour,

    Tout d'abord je vous remercie tous pour vos réponses rapides.
    Apres une heure et demi de tests divers j'ai réussi a faire ce que je voulais !

    Au cas ou d'autres rencontreraient le même problème je laisse la soluce ca peut servir ;)

    Donc en fait pour ma fenetre principale j'utilisais un type wxMDIChildFrame avec lequel je me suis aperçu qu'aucune action avec la souris n'etait possible, par contre au clavier (touche Tab) on pouvait agir sur les champs et les boutons ... bizarre vous avez dit bizarre ? :D
    J'ai donc changer le type de ma fenetre principale en wxFrame et miracle tout fonctionne ;)

    De la même facon, pour les boites de dialogue de type wxMessageDialog(), il faut utiliser la methode ShowModal() pour les afficher la methode Show() fonctionne bien sous Linux, mais pas sous windows (les boites de dialogue ne s'affichent pas ...)

    Bien que le plus simple soit effectivement de développer sous win et de porter ensuite sous tux ... je crois que je préfère encore perdre un peu de temps à corriger les deux trois coquilles non portable que windows n'appreciera pas plutot que de quitter mon pingouin :p

    Pour finir je sens que je vais pondre une doc fr pour wxPython avec les differents problèmes que je rencontre au cours de mon dev, si jamais il y a des interessés pour filer un coup de main, ou certains qui ont des problèmes à référencer n'hésitez pas à me joindre par PM !

    Merci encore à vous tous ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.