Bonjour a tous,
j'ai un soucis d'importation je travaille actuellement avec Pycharm
J'ai 3 fichier main.py, mainProgram.py, classButton.py tous les 3 dans le même dossier

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
 
#fichier main.py
 
from mainProgram import *
import pygame as mainFrame
 
running = True
while running:
  for event in mainFrame.event.get():
    pass
    if event.type == mainFrame.QUIT:
      running = False
 
    elif event.type == mainFrame.MOUSEMOTION:
      (mainProgram.mouseX, mainProgram.mouseY) = mainFrame.mouse.get_pos()
 
    elif event.type == mainFrame.MOUSEBUTTONDOWN:
      mainProgram.mousePressed()
 
    elif event.type == mainFrame.MOUSEBUTTONUP:
      mainProgram.mouseReleased()
 
    mousePresseded = mainFrame.mouse.get_pressed()
    mainProgram.buttonUpdate()
  mainProgram.mainLoop()
  mainFrame.display.flip()
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
#fichier mainProgram.py
 
from classButton import button
import pygame as programFrame
 
prefButton = button("preference", (512), (300), 64, 64, "RECT", None, "ONOFF")
#addLightButton = button("addLight", 512, 300, 150, 100, "RECT", None, "PUSH")
#gpioPinButton = button("gpioPinButton", 512, 300, 150, 100, "RECT", None, "PUSH")
 
class mainProgram:
    backgroundColor = (0, 0, 0)
    displayWidth = 1024
    displayHeight = 600
    display = programFrame.display.set_mode((displayWidth, displayHeight))
    programFrame.display.set_caption('OLC')
    display.fill(backgroundColor)
    clock = programFrame.time.Clock()
 
    mouseX = 0
    mouseY = 0
    mousePresseded = 0.
 
    def __INIT__(self):
        pass
 
    def setMouse(self):
        pass
 
    def buttonSetup(self):
        prefButton.setVisible(True)
        addLightButton.setVisible(False)
        gpioPinButton.setVisible(False)
        print(prefButton.visible)
 
    def buttonUpdate(self):
        prefButton.update()
        addLightButton.update()
        gpioPinButton.update()
 
    def mainLoop(self):
        self.display.fill((0,0,0))
 
    def mousePressed(self):
        pass
 
    def mouseReleased(self):
        pass
 
mainProgram = mainProgram()
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
#fichier classButton.py
from mainProgram import mainProgram
 
class button(object):
    name = None
    x = 0
    y = 0
    buttonSizeX = 0
    buttonSizeY = 0 #img.get_size()
    mouseX = 0
    mouseY = 0
    mouseClick = None
    visible = False  # type: bool
    isPressed = False
    mode = ""  # type: str #RECT, CIRCLE, IMG
    buttontype = ""   #PUSH, ONOFF
    colorR = 255
    colorG = 255
    colorB = 255
    img = None
 
    textVisible = False
    textName = "Default"
    #myfont = mainFrame.font.Font('/home/danny/Bureau/Pycharm/pycharm_project/data/font/digital-7.ttf')
    #label = myfont.render(textName, 1, (0,0,0))
 
 
    def __init__(self, name_, x_, y_, buttonSizeX_, buttonSizeY_, mode_, img_, buttontype_):
 
        self.name = name_
        self.x = x_
        self.y = y_
        self.buttonSizeX = buttonSizeX_
        self.buttonSizeY = buttonSizeY_
        self.mode = mode_
        self.buttontype = buttontype_
        if mode_ == "IMG":
            self.img = mainProgram.transform.scale(img_, (self.buttonSizeX, self.buttonSizeY))
 
 
    def overButton(self):
        if self.x-(self.buttonSizeX/2)+(self.buttonSizeX/2) <= self.mouseX <= self.x+(self.buttonSizeX/2)+(self.buttonSizeX/2) and \
                self.y-(self.buttonSizeY/2)+(self.buttonSizeY/2) <= self.mouseY <= self.y+(self.buttonSizeY/2)+(self.buttonSizeY/2):
           return True
        else:
           return False
 
    def setVisible(self, visible_):
        self.visible = visible_
 
    def setImg(self, img_):
        self.img = mainProgram.transform.scale(img_, (self.buttonSizeX, self.buttonSizeY))
 
    def setColor(self, color_):
        (self.colorR, self.colorG, self.colorB) = color_
 
    def setMode(self, mode_):
        self.mode = mode_
 
    def setButtonType(self, buttontype_):
        self.buttontype = buttontype_
 
    def setTextName(self, textName_):
        self.textName = textName_
 
    def setTextVisible(self, textVisible_):
        self.textVisible = textVisible_
 
 
    def show(self):
        if  self.visible and self.mode == "RECT":
            mainProgram.draw.rect(display, (self.colorR, self.colorG, self.colorB), [self.x, self.y, self.buttonSizeX,self.buttonSizeY])
        elif self.visible and self.mode == "CIRCLE":
            mainProgram.draw.ellipse(display, (self.colorR, self.colorG, self.colorB), [self.x, self.y, self.buttonSizeX,self.buttonSizeY])
        elif self.visible and self.mode == "IMG":
            display.blit(self.img, (self.x, self.y))
       # print(self.overButton())
       # print(self.isPressed)
 
       # if self.textVisible:
       #    display.blit(self.label, ((self.buttonSizeX/2), (self.buttonSizeY/2)))
 
    def pushButton(self):
        if self.overButton() and self.mouseClick[0] == 1:
            self.isPressed = True
        else:
            self.isPressed = False
 
    def onOff(self):
        if self.overButton and self.mouseClick[0] == 1:
            self.isPressed = not self.isPressed
 
    def update(self):
        (self.mouseX, self.mouseY) = programFrame.mouse.get_pos()
        self.mouseClick = programFrame.mouse.get_pressed()
        self.overButton()
        if self.buttontype == "PUSH":
            self.pushButton()
        elif self.buttontype == "ONOFF":
            self.onOff()
et voici l'erreur
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
 
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/danny/Bureau/Pycharm/pycharm-community-2018.3.2/helpers/pydev/_pydev_bundle/pydev_umd.py", line 198, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/home/danny/Bureau/Pycharm/pycharm-community-2018.3.2/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/home/danny/Bureau/Pycharm/Olc/main.py", line 1, in <module>
    from mainProgram import *
  File "/home/danny/Bureau/Pycharm/pycharm-community-2018.3.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/danny/Bureau/Pycharm/Olc/mainProgram.py", line 1, in <module>
    from classButton import button
  File "/home/danny/Bureau/Pycharm/pycharm-community-2018.3.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/danny/Bureau/Pycharm/Olc/classButton.py", line 1, in <module>
    from mainProgram import mainProgram
ImportError: cannot import name 'mainProgram'
je ne sais pas pour quel raison je ne suis pas capable d'appeller la class dans le fichier mainFram
en même temps j’arrive de la programmation Processing j'aimerais savoir si ma façon de monter le programme est la bonne ex:mes class sont tu monter correctement ou a vos yeux il y a un probleme ou l'execution du fichier main est t-elle correct ou ...
Présentement il y a pas mal d'erreur car sa fait 3 jours que je fait des tests sans résultat je m'arrange avec
en gros dans le fichier mainProgram je declare pygame et je declare aussi display pour le set_mode
comment je peux avoir accès a ses 2 instances la dans le fichier classButton

Merci
Danny