Citation Envoyé par Sve@r Voir le message
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Ce qui me rassure, c'est qu'il y a une solution.

Je vais digérer ton explication très technique pour mon niveau mais je ne lâcherai pas ;-) et je vais la mettre en œuvre.

J'ai un peu structuré le code. Si tu le souhaites le github est à jour. https://github.com/MJudicael/EASY-CMIR

Merci !

Edit : A mon avis, je ressens que je ne maîtrise pas assez la logique des boucles for / while. ET donc cela rallonge mes scripts et réduit ma capacité de lecture des exemples proposés...
As-tu un conseil d'apprentissage ?