Voici le programme:NameError dans le gestionnaire de signaux
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(400, 250, 680, 400)
self.setWindowTitle('Programme')
texte = QtGui.QLabel('On connait :', self)
texte.move(30, 50)
i = QtGui.QCheckBox("i", self)
i.move(30, 70)
i.setToolTip("C'est l'angle d'incidence de l'onde.")
i.stateChanged.connect(self.icoche)
n1 = QtGui.QCheckBox("n1", self)
n1.move(30, 90)
n1.setToolTip("C'est l'indice de réfraction du premier milieu. Il correspond au quotient de la vitesse de la lumière dans ce milieu et de la célérité.")
r = QtGui.QCheckBox("r", self)
r.move(30, 110)
r.setToolTip("C'est l'angle de réfraction de l'onde.")
n2 = QtGui.QCheckBox("n2", self)
n2.move(30, 130)
n2.setToolTip("C'est l'indice de réfraction du second milieu. Il correspond au quotient de la vitesse de la lumière dans ce milieu et de la célérité.")
algo = QtGui.QPushButton("Calculer", self)
algo.resize(algo.sizeHint())
algo.move(30, 160)
algo.setEnabled(False)
vali = QtGui.QLineEdit(self)
vali.move(70, 70)
vali.setEnabled(False)
self.show()
def icoche(self, state):
if state == QtCore.Qt.Checked:
vali.setEnabled(True)
else :
vali.setEnabled(False)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Mais quand je coche la case i
, il renvoie l'erreur suivante:
NameError: global name 'vali' is not defined
J'ai essayé self.vali
au lieu de vali
, mais il n » t changer quoi que ce soit. Où est l'erreur?
Veuillez lire un tutoriel de base python sur la façon d'utiliser les attributs dans les classes. – ekhumoro