J'ai un programme qui implique plusieurs classes comme des cadres dans J'ai essayé d'utiliser d'autres modules qui ne fonctionnent pas. J'ai essayé d'utiliser des fonctions qui n'ont pas non plus fonctionné. P>
Je m'attends à pouvoir exécuter le fichier d'échecs lorsque vous appuyez sur le bouton, au lieu de immédiatement car ce fichier de maintien est exécuté.
Cependant, lors de l'exécution du fichier d'échecs exécuté immédiatement et que cet autre fichier ne fonctionne même pas. P> tkinter code>. J'ai un fichier séparé qui utilise
pygame code> et est un jeu d'échecs. Je veux pouvoir charger ce fichier et l'exécuter lorsque j'appuie sur un bouton
Tkinter code> dans l'une des images et fermez ensuite ce fichier. Je suis conscient que l'importation du module au début du fichier Tkinter l'exécute immédiatement ce dont j'ai besoin. Je veux seulement que cela fonctionne lorsque vous appuyez sur le bouton. P>
3 Réponses :
Si vous joignez votre code Python principal dans et si vous faites votre Vous pouvez simplement mais si vous vraiment em> voulez charger des modules de manière dynamique, < Code> Exec ("Importer" + Module_Name) CODE> P> P> si __name__ == "__Main __": code>, il ne fonctionnera que si le fichier est exécuté, non chargé comme module. C'est une pratique courante.
spam.py code> comme celui-là: p>
importer spam code> à la Commençant avec rien ne se passe et faire
spam.main () code> quand vous souhaitez l'exécuter. p>
Un meilleur moyen de programmer le module d'importation utilise le module importLIB code>: docs.python.org/3/library/... Vous devez utiliser
importLib.import_module () code> au lieu de
exécuté code>.
@plopegg merci! Je suis assez nouveau à Python moi-même et je n'ai jamais eu à l'utiliser moi-même, j'ai eu cet exécutif d'un livre et que je le regarde maintenant, la question présentée là-bas était de chargement des modules par nom (chaîne, par exemple dactylographiée par utilisée) . ^ _ ^
Je crois que EXEC code> est surchargé et non nécessaire pour importer des modules pour une raison quelconque. Sans parler
EXEC CODE> est le mieux évité le mieux, car ce n'est pas une option sécurisée.
@Goalsisdecent non monsieur;) Tous les programmeurs ne sont pas des gars
@ Mike-Smt Eh bien, comme je l'ai dit, c'était un exemple de chargement de modules par noms sous forme de chaîne. Dans un livre que la libération précédente était pour Python2, il pourrait donc être un exemple plus ancien mentionné dans le livre Python3. ;) Deuxième importation par nom dans la chaîne dans le livre a été effectuée par var_module = __import __ (module_name_as_str) code>
@ H4Z3 Ces exemples ont peut-être existé et probablement pour une bonne raison, mais j'éviterais de montrer aux débutants l'utilisation de exécutant code> car cela peut être un bit de code vulnérable si elles l'utilisent de manière incorrecte. Aussi
EXEC code> permet de dépanner très difficile lorsque quelque chose ne va pas.
Si vous souhaitez ouvrir le fichier dans l'éditeur natif, de la même manière que le double clic sur Windows,
Vous pouvez appeler Exemple: P>
blockQuote> qui exécuterait un bloc-notes. p> p> os.startfile (fichier) code>. Qui exécute le fichier.
Bien que je ne recommande pas de le faire, vous pouvez créer une fonction qui importera un module après avoir appuyé sur le bouton comme suit:
import bar bar.foo()
L'importation de module n'exécute pas la fonction immédiatement. Si votre fonction est
MyFunction CODE> IN
MYMODULE CODE> Utiliser
Importer MyModule Import>, puis l'exécuter si un bouton est cliqué sur:
tk.button (texte = 'Cliquez sur', commande = myModule.myfunction) code>. Jetez un coup d'oeil sur ceci:
Vous pouvez mettre des énoncés code> importer code> dans les fonctions et ils n'exécuteront que lorsque la fonction est appelée. Pour l'utiliser avec
tkinter code>, mettez le
Importer code> dans la fonction de rappel spécifié via la commande
Commande = CODE> OPTION lors de la création de la touche
CODE > widget.
Pourquoi voudriez-vous vous soucier d'importer lorsque vous appuyez sur un bouton? Il suffit de répertorier toutes vos importations en haut de votre code et d'être effectuée avec elle. Cela dit si vous avez vos importations dans une fonction activée sur le bouton Cliquez, alors vous avez fini par importer de la même manière avec chaque clic. C'est inutile.