如何在Pyqt4中将我的复选框连接到按钮?

时间:2014-07-09 09:56:20

标签: python-2.7 button checkbox pyqt4

我正在构建一个应用程序,其中一个复选框连接到一个按钮,只有当复选框被标记时才会激活该按钮。我有在initUI函数中定义的按钮和复选框,我已经创建了一个按钮隐藏功能,它已连接到我的复选框,但我不断收到错误'qbtn'(我的按钮)未定义。我该怎么办?

initUI:

def initUI(self):   

     # Add push button       
    qbtn = QtGui.QPushButton('Quit', self)
    #connect to button press
    qbtn.clicked.connect(self.ButtonPress)
    qbtn.resize(qbtn.sizeHint())

    qbtn.move(50, 50)
    #Add Check Box
    cb = QtGui.QCheckBox('Agree', self)
    cb.move(20, 20)
    cb.toggle()
    cb.stateChanged.connect(self.ButtonHide)  

ButtonHide:

def ButtonHide(self, state):

        if state == QtCore.Qt.Checked:
            qbtn.setEnabled(True) 
        else:
            qbtn.setEnabled(False) 

错误讯息:

File "<wingdb_compile>", line 46, in ButtonHide
NameError: global name 'qbtn' is not defined
Traceback (most recent call last):

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该存储对父容器中的UI元素的引用,

self.qbtn = QtGui.QPushButton('Quit', self)
...
self.cb = QtGui.QCheckBox('Agree', self)

然后在ButtonHide中引用self.qbtn