在连接类中的Connections时需要帮助

时间:2015-04-23 07:57:25

标签: python pyqt4

我创建了一个带有QTableWidget的窗口,其中有一个带有2个按钮的单元格。

按钮是在单独的类中创建的,我从主程序传递QTableWidget实例。

我无法获得按钮创建类中连接的按钮事件。我的代码段如下

class Buttons():

    def __init__(self,tab):

        buttonLayout = QtGui.QHBoxLayout()
        buttonLayout.setContentsMargins(0,0,0,0)

        self.saveButtonItem = QtGui.QPushButton('Save')
        self.deleteButtonItem = QtGui.QPushButton('Delete')

        buttonLayout.addWidget(self.saveButtonItem)
        buttonLayout.addWidget(self.deleteButtonItem)

        cellWidget = QtGui.QWidget()
        cellWidget.setLayout(buttonLayout)

        tab.insertRow(tab.rowCount())

        tab.setCellWidget(tab.rowCount() - 1,0,cellWidget)

        self.setconncection()

    def setconncection(self):

        self.saveButtonItem.clicked.connect(self.btnSaveClicked)
        self.deleteButtonItem.clicked.connect(self.btnDeleteClicked)
        print 'connections are set'

    def btnSaveClicked(self):

        print 'save clicked'

    def btnDeleteClicked(self):

        print 'delete clicked'

class testing(QtGui.QTableWidget):

    def __init__(self):

        super(testing,self).__init__()

        self.setColumnCount(1)

        for i in xrange(3):

            self.r = Buttons(self)

if __name__ == "__main__" :

    import sys

    app = QtGui.QApplication (sys.argv)

    win = testing ()
    win.show()

    sys.exit(app.exec_())

我的运行时窗口如下

enter image description here

1 个答案:

答案 0 :(得分:1)

__init__测试之后,对Buttons实例的引用将丢失并且对象将被销毁。 (变量r受到影响但未使用。)

保持链接(请参阅以下代码段中的最后一行)使其正常工作。

class testing(QtGui.QTableWidget):

def __init__(self):

        super(testing,self).__init__()

        self.setColumnCount(1)
        self.setRowCount(1)

        self.buttons = []
        for i in xrange(3):
            self.buttons.append(Buttons(self))