<p>程序如下:</p>
<pre><code>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()
</code></pre>
<p>但是当我选中<code>i</code>框时,它返回以下错误:</p>
<blockquote>
<p>NameError: global name 'vali' is not defined</p>
</blockquote>
<p>我尝试了<code>self.vali</code>而不是<code>vali</code>,但它没有改变任何东西。错误在哪里?在</p>