python - pyside qtableview 中的连接事件

标签 python pyqt pyside qtableview

我需要一个简单的示例:如何连接selectRow事件(如果pyside中存在此事件)并调用相应的处理程序。例如

self.table_view.selectedRow.connect(lambda: self.handler(param))

最佳答案

如果您使用的是 QTableView,则需要连接到 selectionChanged其信号selectionModel 。然后您可以使用 selectedRows选择模型的方法来获取选定的行(其中“选定行”表示整行被选中)。

这是一个简单的演示:

from PySide import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self, rows, columns):
        QtGui.QWidget.__init__(self)
        self.table = QtGui.QTableView(self)
        model =  QtGui.QStandardItemModel(rows, columns, self.table)
        for row in range(rows):
            for column in range(columns):
                item = QtGui.QStandardItem('(%d, %d)' % (row, column))
                item.setTextAlignment(QtCore.Qt.AlignCenter)
                model.setItem(row, column, item)
        self.table.setModel(model)
        selection = self.table.selectionModel()
        selection.selectionChanged.connect(self.handleSelectionChanged)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.table)

    def handleSelectionChanged(self, selected, deselected):
        for index in self.table.selectionModel().selectedRows():
            print('Row %d is selected' % index.row())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window(5, 5)
    window.show()
    window.setGeometry(600, 300, 600, 250)
    sys.exit(app.exec_())

关于python - pyside qtableview 中的连接事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266564/

相关文章:

python - 如何在带有繁忙指示器的 QProgressBar 上显示文本?

python - 如何使用 PySide 向 QTableWidget 添加数据

python - 如何通过 python/pyqt 创建 Windows 7 跳转列表?

python - 当我在 win7 中使用 pyside-uic 时,突破并告诉我 :ImportError: No module named pkg_resources

python - 是否可以在 Windows 上多次安装特定版本的 Python?

python - 为类似数字代码的系统实现队列

python - 在 Mac 上安装 Python 包/模块

python - 类型错误 : detail() missing 1 required positional argument: 'request'

python - 在 python 中使用类

python - 如果某些条件是有条件的,进行多重或比较的最有效方法是什么