QTableWidget选择问题

有的时候想设计成一次只能选择一行数据,但现实情况是没有一个直接的方法可以实现,要么允许可以选中多行,要么只能选择一个单元格,下面的代码可以解决这个问题

Note

以下代码是由ChatGPT生成的

Python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
import sys

class MyTableWidget(QTableWidget):
    def __init__(self, rows, columns):
        super().__init__(rows, columns)
        self.setSelectionBehavior(QTableWidget.SelectRows)
        self.setSelectionMode(QTableWidget.SingleSelection)

def main():
    app = QApplication(sys.argv)
    window = QWidget()
    layout = QVBoxLayout(window)

    # 创建QTableWidget实例
    table_widget = MyTableWidget(5, 3)

    # 填充表格数据
    for row in range(5):
        for col in range(3):
            item = QTableWidgetItem(f'Row {row} Col {col}')
            table_widget.setItem(row, col, item)

    layout.addWidget(table_widget)

    window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

以下是ChatGPT给出的解释:

Note

如果你设置了setSelectionBehavior(QTableWidget.SelectRows)之后,发现仍然可以一次选中多行,可能是因为同时启用了多选(multi-selection)的选项。要解决这个问题,你还需要设置setSelectionMode方法,将选择模式设置为QAbstractItemView.SingleSelection,这样就确保只能选择一行。