Question Application rapide Comment appeler la fonction à partir d'autres fichiers .py?


Je suis nouveau à la programmation et j'écris mon premier programme Python rapidement. J'ai ajouté une nouvelle fenêtre et sur cette nouvelle fenêtre je veux appeler la fonction depuis la fenêtre principale? Je google pour cela et tout ce que j'ai trouvé, c'est que je devais l'importer mais il ne savait pas comment.

Voici ce que j'ai mis une nouvelle fenêtre:

from magic_ebay.MagicEbayWindow import MagicEbayWindow

et j'ai une erreur:

ImportError: cannot import name MagicEbayWindow

MagicEbayWindow.py est le nom de la fenêtre principale de mon programme et je veux appeler la fonction de MagicEbayWindow.py mais sur une autre fenêtre. (ne sais pas si ça a du sens :))

Merci pour toute aide!


1
2017-07-19 20:45


origine


Besoin d'un contexte. Vous pouvez analyser les structures de parent pour passer d'un enfant, passer un pointeur à l'instance de classe (une fois qu'il est abstrait, il s'agit en réalité d'un pointeur sur une instance) ou en faire un global. Avez-vous ceci dans un ppa / github ou quelque chose? - RobotHumans
non, ne l’a pas sur github. - Majster-pl
alors vous voulez regarder ajouter à sys.path, mais il n'y a pas beaucoup plus que je peux dire sans contexte - RobotHumans
merci pour votre aide, je vais essayer de laisser tomber à github ce soir ... merci - Majster-pl


Réponses:


Lorsque vous courez:

from magic_ebay.MagicEbayWindow import MagicEbayWindow

Vous dites essentiellement "Veuillez importer le MagicEbayWindow symbole de la MagicEbayWindow module dans le magic_ebay package ". Le message d'erreur indique que votre MagicEbayWindow.py le module n'a pas un tel symbole.

Il y a plusieurs façons de résoudre ce problème:

  1. Importez simplement le module:

    from magic_ebay import MagicEbayWindow
    

    Vous pouvez ensuite accéder aux fonctions du module, par ex. MagicEbayWindow.foo()

  2. Importer des fonctions individuelles du module:

    from magic_ebay.MagicEbayWindow import foo
    

    Avec ce style, vous pouvez appeler les fonctions sans le préfixe du nom du module.


1
2017-07-20 02:44



Ok je l'ai eu finalement :) à la place: - Majster-pl
Ok je l'ai eu finalement :) à la place: à partir de magic_ebay importer MagicEbayWindow j'ai fait: importer MagicEbayWindow et ça marche! maintenant, quand je veux appeler la fonction de MagicEbayWindow, je dois faire: mee = MagicEbayWindow.MagicEbayWindow () mee.foo (self) Je pourrais le faire tout autour mais ça marche pour moi pour le moment! JE VOUS REMERCIE! - Majster-pl