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

2024-05-19 16:10:58 发布

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

我创建了一个窗口,其中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


Tags: selfinitdefsystesting按钮tabprint
1条回答
网友
1楼 · 发布于 2024-05-19 16:10:58

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

相关问题 更多 >