Bonjour,

je m'adresse à vous aujourd'hui car j'ai un problème que je n'arrive pas a résoudre et que je ne comprend pas.
Je travaille sur une appli dans le cadre de mon boulot pour gérer mon parc d'ordinateurs (c'est perso pour tuer le temps et apprendre du python ).
l'appli fonctionnait correctement mais celle-ci commençant à être dense j'ai voulu la découper en plusieurs fichier "py" pour faciliter la navigation et le codage entre mes différentes fenêtres.
sauf que depuis j'ai une erreur:

<< ImportError: cannot import name 'RootWindow' from partially initialized module 'mainwindow' (most likely due to a circular import) (C:\Users\Jean-Philippe\PycharmProjects\PARC_2\mainwindow.py) >>
Voici une partie de mon code:

Fichier execution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
from mainwindow import RootWindow
 
global winpcpal
winpcpal = RootWindow()

Fichier mainwindow :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from tkinter import *
from settingutil import SettingUtil
from settingparc import SettingParc
 
 
class RootWindow:
 
    def __init__(self):
 
        # Creation de la fenetre principale du logo et du titre
        self.master = Tk()
        # Creation de la frame principale et des sous-frames
        self.frame = Frame(self.master, width=1540, height=1360)
        self.frame.pack()
        self.lframe = Frame(self.frame, width=770, height=580)
        self.lframe.pack(side="left")
 
        # Bouton
        self.btn_user_settings = Button(self.lframe, command=self.sh_gestion_util)
        self.btn_user_settings.pack()
 
        self.flag = 0
        self.master.mainloop()
 
    def sh_gestion_util(self):
        global winsetutil
        if self.flag == 0:
            self.master.state('iconic')
            winsetutil = SettingUtil()
            self.flag = 1
            #self.settings.swin.mainloop()
        else:
            self.settings.swin.destroy()
            self.flag = 0
Fichier settingutil:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from tkinter import *
from execution import winpcpal
 
# Classe pour fenetre de gestion des utilisateurs
class SettingUtil:
 
    def __init__(self):
        self.swin = Toplevel()
 
        # Creation de la frame principale
        self.frame = Frame(self.swin, width=1500, height=1500)
        self.frame.pack(padx=5, pady=5)
 
        self.swin.protocol("WM_DELETE_WINDOW", self.on_close)
 
 
    def on_close(self):
        self.swin.destroy()
        self.settings = winpcpal
        self.settings.deiconify()
Voila, j'ai épuré un max pur ne mettre que l'utile le reste étant d'autres boutons , labels, etc ..
et cela me et l'erreur dès que je tente d'importer ma variable globale "winpcpal".

je comprend le principe de boucle de l'erreur mais je n'arrive pas à voir comment cela se produit dans mon code et encore moins comment le résoudre.
(je ne suis qu'un débutant qui s'est trouvé un projet pour occuper son temps et apprendre ^^).
Je suis disponible si des éclaircissement sont demandé .

merci d'avance a vous et bonne journée !