在PyQt5/PySide2中,要获取选定行的索引,可以使用QTableView或QTableWidget的selectedIndexes()方法。该方法返回一个列表,包含了所有选定单元格的索引。
以下是一个示例代码:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QAbstractItemView, QHeaderView, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_view = QTableView()
self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# 假设有一个名为data的二维列表,作为表格的数据源
data = [
['John', 'Doe', 'john.doe@example.com'],
['Jane', 'Smith', 'jane.smith@example.com'],
['Bob', 'Johnson', 'bob.johnson@example.com']
]
# 创建一个表格模型,并设置数据源
model = TableModel(data)
self.table_view.setModel(model)
# 将表格视图添加到主窗口的布局中
layout = QVBoxLayout()
layout.addWidget(self.table_view)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def get_selected_row_index(self):
selected_indexes = self.table_view.selectedIndexes()
if selected_indexes:
# 获取选定行的索引
row_index = selected_indexes[0].row()
return row_index
else:
return -1
class TableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self.data = data
def rowCount(self, parent):
return len(self.data)
def columnCount(self, parent):
return len(self.data[0])
def data(self, index, role):
if role == Qt.DisplayRole:
return self.data[index.row()][index.column()]
return None
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在上述示例中,我们创建了一个包含三列数据的表格,并设置了选择行的模式为单选。然后,我们定义了一个get_selected_row_index()
方法,用于获取选定行的索引。该方法通过调用selectedIndexes()
方法获取所有选定单元格的索引,然后返回第一个索引的行号。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。
腾讯云相关产品和产品介绍链接地址:
以上是对获取PyQt5/PySide2中选定行的索引的完善且全面的答案。
领取专属 10元无门槛券
手把手带您无忧上云