Tous tes scripts ont un mainloop()? Evidemment ça ne peut pas marcher, le mainloop() devant être unique. Et chaque import évidemment appelle chaque mainloop()
Mais les concepteurs de Python ont aussi prévu ce souci en rendant un script à la fois autonome et à la fois importable: suffit de mettre la partie autonome dans un
if __name__ == "__main__".
Exemple: je veux faire un script "xxx.py" qui fasse un calcul de factorielle, mais que ce script soit aussi importable ailleurs
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| def fact(n):
res=1
while n > 1:
res*=n
n-=1
return res
# fact()
if __name__ == "__main__":
# Test
for i in range(10): print(i, fact(i))
# if |
Lorsqu'il est exécuté, sa variable __name__ vaut la string "__main__" et le code du "if" est exécuté et ça affiche les factorielles de 0 à 9. Mais quand il est importé (ex
import xxx), la variable __main__ vaut autre chose (le nom de l'import en fait) et la partie dite "autonome" (ici la boucle de tests) ne se fait pas. Mais la fonction, elle, est utilisable par celui qui a importé le script.