信号手名称错误

2024-09-27 20:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

程序如下:

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,但它没有改变任何东西。错误在哪里?在


Tags: selfmovedefdelaestvalin2
2条回答

如果上面的答案对你没有帮助。在这段代码中,我只能看到缩进问题。函数与类的缩进不正确。在class Example(QtGui.QWidget):之后,所有代码都缺少一个“制表符”,因此函数中的每个self只能由一个函数识别

您需要在整个类中使用self才能将其用作类属性。你拥有它的方式只是在每个功能的范围内,而不是两者。在

    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)

相关问题 更多 >

    热门问题