2016-12-07 110 views
0

這裏的程序:NameError在信號處理

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() 

但是當我檢查i框,它返回以下錯誤:

NameError: global name 'vali' is not defined

我試過self.vali,而不是vali,但它不」不改變任何事情。錯誤在哪裏?

+0

請閱讀有關如何在類中使用屬​​性的基本python教程。 – ekhumoro

回答

2

您需要在整個班級中使用自我才能將其用作班級屬性。你擁有它的方式只是在每個功能的範圍內,而不是兩個。

self.vali = QtGui.QLineEdit(self) 
    self.vali.move(70, 70) 
    self.vali.setEnabled(False) 

    self.show() 

def icoche(self, state): 

    if state == QtCore.Qt.Checked: 
     self.vali.setEnabled(True) 
    else: 
     self.vali.setEnabled(False) 
0

如果上面的答案沒有幫助你。我在這段代碼中可以看到的是縮進問題。您的功能與您的課程沒有正確縮進。您在class Example(QtGui.QWidget):之後缺少一個「選項卡」到您的所有代碼由此,函數中的每個self僅由一個函數識別

+0

這只是問題中的代碼格式問題,現在已經修復。 – ekhumoro