import sys
from PyQt5.QtWidgets import *
class MyWin(QWidget):
def __init__(self):
super().__init__()
self.resize(900, 600)
self.setWindowTitle('QTableWidget选中单元格的三方法')
MainLay = QVBoxLayout()
self.setLayout(MainLay)
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(18)
self.tableWidget.setColumnCount(8)
for i in range(self.tableWidget.rowCount()):
for j in range(self.tableWidget.columnCount()):
item = QTableWidgetItem(f'{i},{j}')
self.tableWidget.setItem(i, j, item)
MainLay.addWidget(self.tableWidget)
MainLay.addStretch()
lay = QHBoxLayout()
MainLay.addLayout(lay)
b1 = QPushButton('选中的单元格项')
b1.clicked.connect(self.selectedeItems)
b2 = QPushButton('选中的单元格区域')
b2.clicked.connect(self.selectedRanges)
b3 = QPushButton('选中的单元格索引')
b3.clicked.connect(self.selectedIndexes)
b4 = QPushButton('选中的选择模型')
b4.clicked.connect(self.selectionModel)
lay.addStretch()
lay.addWidget(b1)
lay.addWidget(b2)
lay.addWidget(b3)
lay.addWidget(b4)
def selectedeItems(self):
selectedItems = self.tableWidget.selectedItems()
print(selectedItems)
'''
输出结果是一个列表,元素为被选中的单元格项,该结果输出的前提是,单元格必须用table.setItem()方法先设置单元格项
'''
for item in selectedItems:
print(f'被索引单元格的行号:{item.row()},列号:{item.column()},文本:{item.text()}')
'''
QTableWidgetItem对象的方法
item.row() 单元格项所在的行号
item.column() 单元格项所在的列号
item.text() 单元格项的文本内容
'''
def selectedRanges(self):
selectedRanges = self.tableWidget.selectedRanges()
print(selectedRanges)
'''
输出结果是一个列表,元素为被选中的单元格区域
'''
for Range in selectedRanges:
print(Range.topRow(), Range.leftColumn(), Range.bottomRow(), Range.rightColumn())
'''
在 PyQt5 中,QTableWidget的selectedRanges()方法用于获取当前选中的范围列表。每个范围用QTableWidgetSelectionRange
对象表示。
QTableWidgetSelectionRange描述了一个基于逻辑项位置连续的矩形范围,其矩形范围的左上角坐标为该范围内左上角逻辑项的逻辑行号
和列号,右下角为右下角逻辑项的逻辑行号和列号。需要注意的是,这里指的是逻辑项而不是可见项。
由于选中的项可能不连续,因此selectedRanges()返回的可能是多个QTableWidgetSelectionRange矩形的列表,每个矩形内是一个连
续的选中范围。
QTableWidgetSelectionRange对象的方法
Range.topRow() 选中单元格区域的上部行号
Range.leftColumn() 选中单元格区域的左侧列号
Range.bottomRow() 选中单元格区域的下部行号
Range.rightColumn() 选中单元格区域的右侧列号
'''
def selectedIndexes(self):
selectedIndexes = self.tableWidget.selectedIndexes()
print(self.tableWidget.selectedIndexes())
'''
输出结果是一个列表,元素为被选中的单元格索引
'''
for index in selectedIndexes:
row = index.row()
column = index.column()
item = self.tableWidget.item(row, column)
print(f'选中的单元格行号{row},列号{column},内容:{item.text()}')
'''
在 PyQt5 中,QTableWidget的selectedIndexes()方法用于获取当前选中的单元格索引列表。每个索引表示表格中的一个单元格位置。
索引对象的方法
index.row() 返回索引单元格的所在行号
index.column() 返回索引单元格的所在列号
'''
def selectionModel(self):
selection=self.tableWidget.selectionModel() # 返回值是一个PyQt5.QtCore.QItemSelectionModel对象
print(selection)
selectedIndexes=selection.selectedIndexes() # 返回选择的区域的单元格索引列表,每一个元素都是PyQt5.QtCore.QModelIndex对象。
for index in selectedIndexes:
row = index.row()
column = index.column()
item = self.tableWidget.item(row, column)
print(f'选中的单元格索引{index},行号{row},列号{column},内容:{item.text()}')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWin()
w.show()
app.exec()
PyQt5 QTabelWidget 选择单元格的四种方法
于 2024-07-26 11:14:15 首次发布