0
votes

L'importation de module dans le bouton Tkinter est enfoncé

J'ai un programme qui implique plusieurs classes comme des cadres dans tkinter . J'ai un fichier séparé qui utilise pygame et est un jeu d'échecs. Je veux pouvoir charger ce fichier et l'exécuter lorsque j'appuie sur un bouton Tkinter 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.

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é.

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.


3 Réponses :


-1
votes

Si vous joignez votre code Python principal dans si __name__ == "__Main __": , il ne fonctionnera que si le fichier est exécuté, non chargé comme module. C'est une pratique courante.

et si vous faites votre spam.py comme celui-là: xxx

Vous pouvez simplement importer spam à la Commençant avec rien ne se passe et faire spam.main () quand vous souhaitez l'exécuter.

mais si vous vraiment voulez charger des modules de manière dynamique, < Code> Exec ("Importer" + Module_Name)


6 commentaires

Un meilleur moyen de programmer le module d'importation utilise le module importLIB : docs.python.org/3/library/... Vous devez utiliser importLib.import_module () au lieu de exécuté .


@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 est surchargé et non nécessaire pour importer des modules pour une raison quelconque. Sans parler EXEC 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)


@ 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 car cela peut être un bit de code vulnérable si elles l'utilisent de manière incorrecte. Aussi EXEC permet de dépanner très difficile lorsque quelque chose ne va pas.



0
votes

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 os.startfile (fichier) . Qui exécute le fichier.

Exemple: xxx

qui exécuterait un bloc-notes.


0 commentaires

0
votes

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()


0 commentaires