Python Qt 读者操作界面: QTableWidget 不可更改列设置

本代码示例展示了如何使用 Python Qt 框架中的 QTableWidget 创建一个读者操作界面,并设置第一列不可更改,其他列可编辑。

class Oper_Reader_Window(QMainWindow):
    def __init__(self, parent=None):
        super(Oper_Reader_Window, self).__init__(parent)
        self.setWindowTitle('读者操作界面')
        self.resize(400, 300)

        # 创建界面控件
        self.label_readerName = QLabel('输入姓名:')
        self.edit_readerName = QLineEdit()
        self.btn_search_readerName = QPushButton('搜索')
        self.table_reader = QTableWidget(5, 7)
        self.table_reader.setHorizontalHeaderLabels(['借书证号', '姓名', '性别', '出生年月', '借书量', '联系方式', '备注'])
        
        self.label_choose_operReader = QLabel('选择操作')
        self.btn_add_reader = QPushButton('添加读者')
        self.btn_alter_reader = QPushButton('修改选中读者')
        self.btn_del_reader = QPushButton('删除读者')
        self.btn_back_2 = QPushButton('返回')

        # 设置 QTableWidget 属性
        self.table_reader.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table_reader.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed)
        self.table_reader.setSelectionBehavior(QAbstractItemView.SelectRows)

        # 设置第一列不可更改
        for row in range(self.table_reader.rowCount()):
            item = QTableWidgetItem()
            item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable)
            self.table_reader.setItem(row, 0, item)

代码解析:

  1. 创建 QTableWidget:

    • self.table_reader = QTableWidget(5, 7) 创建一个 5 行 7 列的表格。
    • self.table_reader.setHorizontalHeaderLabels([...]) 设置表格列标题。
  2. 设置表格属性:

    • self.table_reader.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) 设置列宽自适应。
    • self.table_reader.setEditTriggers(...) 设置表格编辑模式:双击或按回车键进行编辑。
    • self.table_reader.setSelectionBehavior(QAbstractItemView.SelectRows) 设置选择模式:选择整行。
  3. 设置第一列不可更改:

    • 使用循环遍历表格所有行。
    • item = QTableWidgetItem() 创建一个表格项。
    • item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable) 设置表格项不可编辑。
    • self.table_reader.setItem(row, 0, item) 将不可编辑的表格项设置到第一列。

注意:

  • 确保已导入必要的 Qt 库 (from PyQt5.QtWidgets import *)。
  • 该代码示例只展示了设置第一列不可更改,你可以根据需要修改其他列的编辑属性。
  • 可以根据实际需要调整表格的行数和列数。
  • 为了完整运行代码,你需要完成界面布局和添加其他控件的代码。

原文地址: https://www.cveoy.top/t/topic/oPLf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录