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()passdef 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()passdef table_itemClicked(self,cur_item: QTableWidgetItem):cur_row = cur_item.row()self.label.setText(f'当前选中的行号为:{cur_row}')passdef 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)passdef delete_action_triggered(self):selected = self.table.selectedIndexes()if selected:row = selected[0].row()self.table.removeRow(row)passdef table_customContextMenuRequested(self,pos):self.context_menu.exec(self.table.viewport().mapToGlobal(pos))passif __name__ == '__main__':app = QApplication([])mw = TempWidget()mw.show()app.exec()pass