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:
Voici une partie de mon code:<< 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) >>
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 :
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
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
Voila, j'ai épuré un max pur ne mettre que l'utile le reste étant d'autres boutons , labels, etc ..
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()
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 !
Partager