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,这样就确保只能选择一行。