PyQt6基础_QTableWidget

目录

描述:

代码

演示


描述:

1 单击选中一行

2 右键菜单

3 填充数据

4 提取行数据

5 删除行数据

代码

复制代码
from PyQt6.QtCore import (
    Qt
)
from PyQt6.QtGui import (
QAction
)
from PyQt6.QtWidgets import (
    QApplication,
    QAbstractItemView,
    QLabel,
    QTableWidget,
    QTableWidgetItem,
    QWidget,
    QVBoxLayout,
    QMenu
)

class TempWidget(QWidget):
    def __init__(self):
        super().__init__()

        self.label = QLabel('--')
        self.label1 = QLabel('--')

        self.table = QTableWidget()
        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(['代码','名称','细分行业'])
        self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
        self.table.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
        self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
        self.table.itemClicked.connect(self.table_itemClicked)

        self.context_menu = QMenu(self)
        get_action = QAction('提取',self)
        delete_action = QAction('删除',self)
        self.context_menu.addAction(get_action)
        self.context_menu.addAction(delete_action)
        get_action.triggered.connect(self.get_action_triggered)
        delete_action.triggered.connect(self.delete_action_triggered)
        self.table.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
        self.table.customContextMenuRequested.connect(self.table_customContextMenuRequested)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.label1)
        layout.addWidget(self.table)
        self.setLayout(layout)
        self.open_init()
        pass
    def open_init(self):
        data_list = [
            ['600519','贵州茅台','白酒'],
            ['601398','工商银行','银行'],
            ['601288','农业银行','银行'],
            ['601857','中国石油','石油开采'],
            ['300750','宁的时代','电气设备'],
            ['600900','长江电力','水力发电'],
        ]
        self.table.setRowCount(len(data_list))
        for r,row in enumerate(data_list):
            for c,v in enumerate(row):
                self.table.setItem(r,c,QTableWidgetItem(str(v)))
        self.table.resizeColumnsToContents()
        pass
    def table_itemClicked(self,cur_item: QTableWidgetItem):
        cur_row = cur_item.row()
        self.label.setText(f'当前选中的行号为:{cur_row}')
        pass
    def get_action_triggered(self):
        selected = self.table.selectedIndexes()
        if selected:
            row = selected[0].row()
            col_count = self.table.columnCount()
            res_str = ''
            for i in range(col_count):
                res_str += self.table.item(row,i).text() + ';'
            self.label1.setText(res_str)
        pass
    def delete_action_triggered(self):
        selected = self.table.selectedIndexes()
        if selected:
            row = selected[0].row()
            self.table.removeRow(row)
        pass
    def table_customContextMenuRequested(self,pos):
        self.context_menu.exec(self.table.viewport().mapToGlobal(pos))
        pass


if __name__ == '__main__':
    app = QApplication([])
    mw = TempWidget()
    mw.show()
    app.exec()
    pass

演示

相关推荐
程序猿与金融与科技18 天前
PyQt6实例_pyqtgraph散点图显示工具_代码分享
pyqt6·pyqtgraph·a股
程序猿与金融与科技21 天前
PyQt6实例_消息工具_使用与完整代码分享
pyqt6·a股
程序猿与金融与科技21 天前
PyQt6基础_pyqtgraph_折线图with缩放调节
python·pyqt6·pyqtgraph
程序猿与金融与科技23 天前
PyQt6实例_pyqtgraph多曲线显示工具_代码分享
pyqt6·pyqtgraph·a股
程序猿与金融与科技1 个月前
PyQt6实例_A股财报数据维护工具_解说并数据与完整代码分享
pyqt6·a股
程序猿与金融与科技1 个月前
PyQt6实例_A股日数据维护工具_界面代码
pyqt6·a股日数据
程序猿与金融与科技2 个月前
PyQt6实例_批量下载pdf工具_exe使用方法
pyqt6
程序猿与金融与科技2 个月前
PyQt6实例_批量下载pdf工具_主线程启用线程池
pyqt6
程序猿与金融与科技2 个月前
PyQt6实例_批量下载pdf工具_线程池
pyqt6