Bonjour, je travaille sur un tp, je suis bloqué depuis hier. quelqu'un peut -il m'aider svp ?
voici le code :
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QMainWindow, QWidget, QPushButton, QAction
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore, QtWidgets
 
 
class myHisto:
    """Classe myHisto pour stocker l'histogramme"""
 
    def __init__(self):
        print('Méthode __init__()  de la classe myHisto')
        self.m_list = []
 
    def max(self):
        """Pour trouver le max de l'histogramme"""
        bin_max = 0
        for i in self.m_list:
            if i.m_amount > bin_max:
                bin_max = i.m_amount
        return bin_max
 
 
class Intervalle:
    """ Classe Intervalle"""
 
    def __init__(self, a=0, b=0):
        print('Méthode __init__() de la classe Intervalle')
        self.m_x = a
        self.m_amount = b
 
 
class MyMainWindow(QMainWindow):
    """ Classe de l'application principale"""
 
    def __init__(self, parent=None):
        QWidget.__init__(self, parent=parent)
 
        # Attributs de la fenetre principale
        self.setGeometry(300, 300, 600, 450)
        self.setWindowTitle('Main Window')
        # Barre de status pour afficher les infos
        self.statusBar = QStatusBar()
        self.setStatusBar(self.statusBar)
        self.statusBar.showMessage("Zone d'informations, peut toujours servir")
 
        # Creation d'une instance de la classe myHisto
        self.mHisto = myHisto()
 
        self.createActions()
        self.createMenus()
 
    def createActions(self):
        """ Créer ici les actions d'item de menu ainsi que connexions signal/slot, à compléter"""
        self.exitAct = QAction(" &Quit", self)
        self.openAct = QAction(" &Open", self)
        self.saveAct = QAction(" &Save", self)
        self.exitAct.setShortcut("Ctrl+X")
        self.openAct.setShortcut("Ctrl+O")
        self.saveAct.setShortcut("Ctrl+S")
 
    def createMenus(self):
        """ Créer ici les menu et les items de menu, à compléter"""
        fileMenu = self.menuBar().addMenu("&File")
       # self.actcolor.setIcon(QIcon(self.color_action_color))
 
        # //  Action Open file //
 
        actOpen = QAction( QIcon( "" ), "&Open", self )
        actOpen.setStatusTip( "Open" )
        actOpen.setShortcut("Ctrl+O")
        actOpen.triggered.connect(self.open)
        fileMenu.addAction(actOpen)
 
        # //  Action save file//
        actSave = QAction("&Save", self)
        actSave.setStatusTip("Save ")
        actSave.setShortcut("Ctrl+S")
        fileMenu.addAction(actSave)
 
        # // action  restore file //
        actRest = QAction("&Restore", self)
        actRest.setStatusTip("Restore ")
        fileMenu.addAction(actRest)
 
        # // Display Menu //
        displayMenu = self.menuBar().addMenu("&Display")
 
        # // action clear //
 
        actClear = QAction(QIcon(""),"&Clear", self)
        actClear.setStatusTip("Clear")
        displayMenu.addAction(actClear)
 
        # Action Color /
        actColor = QAction("&Color", self)
        actClear.setStatusTip("Color")
        displayMenu.addAction(actColor)
 
 
    # Fonction open file   
 
    def open (self): 
        self.statusBar.showMessage("Histogram Open !")
 
        filename = QFileDialog.getOpenFileName(QFileDialog(), " Ouverture du fichier",".", "*.dat")
        print('open')
        q_file = QFile(filename[0])
        q_file.open(QIODevice.ReadOnly)  
 
        mod = 0  
 
        self.mHisto.liste = []
        for element in  QTextStream(q_file).readAll().split():
            if mod % 2 == 1 :
                self.mHisto.liste.append(element)
                mod += 1
                self.is_drawable = True
                self.update() 
 
 
 
    def myExit(self):
        """ Slot associé à exitAct, instance de QAction, à compléter """
        self.statusBar.showMessage("Quit ...")
        QApplication.quit()
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyMainWindow()
    w.show()
    app.exec_()

voici le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
TP3_PyQt_base.py", line 108, in open
    q_file = QFile(filename[0])
NameError: name 'QFile' is not defined