Forum Programmation.python Placer la création d'un formulaire dans un module ???

Posté par  .
Étiquettes : aucune
-2
9
mai
2011

Bonjour,

Je débute en Python en programmant des plugins pour BankPerfect (logiciel de comptabilité personnelle développé en Delphi)
Au cas où ce serait important, il semble que la version de Python 'embarquée' dans BP soit la 2.3

Voici mon problème :
j'assortis mes plugins d'un 'panneau de configuration' (formulaire) qui a toujours à peu près la même allure .
Plutôt que de recopier la création de ce formulaire dans chaque plugin, j'aimerais le placer dans un module baptisé par exemple "pref.py"
J'ai donc isolé dans un fichier 'pref.py' les instructions de création de ce formulaire qui utilisent bien sur 'CreateComponent()'
puis j'ai ajouté 'import pref.py' à mon programme principal

Jusque là tout va bien mais à l'exécution, j'obtiens une erreur "global name CreateComponent is not defined"
Le fait de placer le code de création du formulaire dans un module modifie-t-il la façon dont l'interpréteur voir CreateComponent ? il semble le comprendre comme une variable et non plus comme une méthode ...

Comment puis-je faire pour déplacer la création de mon formulaire dans un module ?
Au secours !!!

  • # importer CreateComponent

    Posté par  . Évalué à 3.

    Si j'ai bien compris :

    Pour que cela fonctionne il faut que dans le fichier pref.py la méthode CreateComponent() soit disponible. Il faut donc importer le module qui contient cette méthode dans le fichier pref.py

    Au passage il me semble que le ".py" est inutile lorsque tu utilises import.

  • # La solution

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

    essaie pref.CreateComponent, ça devrait marcher.

    Mais je t'encourage a arrêter de programmer avant d'avoir lu le tutorial python de Guido (au minimum). En écrivant du code sans maîtriser les bases, tu vas faire des tonnes d'erreurs que tu regretteras plus tard.

  • # c'est pas encore ça

    Posté par  . Évalué à 0.

    Merci les gens... ça fait un moment que je potasse ce tuto.
    J'ai du mal à adapter à mes problèmes car je programme pour BankPerfect.
    ce qui signifie que je suis dans un environnement particulier : la version de Python est 'Python for Delphi' ... qui semble-t-il s'est arrêté à la 2.3 de Python, et tous les composants ou événements ne sont pas disponibles.
    J'ajoute que la fonction CreateComponent() n'est pas une fonction définie dans mon programme mais une fonction 'BuiltIn' de Python for Delphi... au moins de cette version là.
    Je ne peux donc pas essayer la première proposition pusique je n'ai pas de module à charger qui contiendrait cette fonction
    Et le deuxième proposition ne fonctionne pas non plus (ça m'aurait étonné, mais j'ai essayé quand même, on n'est jamais à l'abri d'une bonne surprise)

    Si quelqu'un a des pistes, je suis preneur.

    Merci,
    Robert.

  • # Argument

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

    Bonjour,
    Il semble que la fonction CreateComponent ne soit disponible que dans ton module principal. Si c'est bien le cas, tu peux essayer de la passer à ta fonction comme un argument.

    module pref:

    def createForm(createComponentFunction, argA, argB, etc...)
        # traitement
        createComponentFunction()  # equivaut à CreateComponent
        # traitement
    

    module principal:

    import pref
    pref.createForm(CreateComponent, argA, argB, ...)
    
  • # Commentaire supprimé

    Posté par  . Évalué à 0.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Merci !

    Posté par  . Évalué à 1.

    Merci Ben, ça, ça marche !

    Robert

Suivre le flux des commentaires

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