电视剧男女直接做视频网站店面设计师
QTableWidget 是 PyQt6 中的一个表格控件,用于显示和编辑二维表格数据。它继承自 QTableView,提供了更简单的方式来处理表格数据,适合用于需要展示结构化数据的场景。
1. 常用方法
1.1 构造函数
-  
QTableWidget(parent: QWidget = None):创建一个空的表格控件。 -  
QTableWidget(rows: int, columns: int, parent: QWidget = None):创建一个指定行数和列数的表格控件。 
1.2 设置行列数
-  
setRowCount(rows: int):设置表格的行数。 -  
setColumnCount(columns: int):设置表格的列数。 -  
rowCount() -> int:获取表格的行数。 -  
columnCount() -> int:获取表格的列数。 
1.3 设置表头
-  
setHorizontalHeaderLabels(labels: List[str]):设置水平表头的标签。 -  
setVerticalHeaderLabels(labels: List[str]):设置垂直表头的标签。 -  
horizontalHeader() -> QHeaderView:获取水平表头对象。 -  
verticalHeader() -> QHeaderView:获取垂直表头对象。 
1.4 设置单元格内容
-  
setItem(row: int, column: int, item: QTableWidgetItem):设置指定单元格的内容。 -  
item(row: int, column: int) -> QTableWidgetItem:获取指定单元格的内容。 -  
takeItem(row: int, column: int) -> QTableWidgetItem:移除指定单元格的内容并返回。 
1.5 设置单元格属性
-  
setCellWidget(row: int, column: int, widget: QWidget):在指定单元格中放置一个控件(如按钮、下拉框等)。 -  
cellWidget(row: int, column: int) -> QWidget:获取指定单元格中的控件。 -  
setSpan(row: int, column: int, rowSpan: int, columnSpan: int):合并单元格。 
1.6 选择模式
-  
setSelectionMode(mode: QAbstractItemView.SelectionMode):设置选择模式(如单选、多选等)。 -  
setSelectionBehavior(behavior: QAbstractItemView.SelectionBehavior):设置选择行为(如选择行、选择列等)。 
1.7 信号
-  
cellChanged(row: int, column: int):当单元格内容发生变化时触发。 -  
cellClicked(row: int, column: int):当单元格被点击时触发。 -  
cellDoubleClicked(row: int, column: int):当单元格被双击时触发。 
2. 例子
import os
import sys
import webbrowserimport qt_material
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *class Window(QWidget):def __init__(self):super(Window, self).__init__()self.resize(400, 300)self.init_widget()self.init_signal()self.init_getdata()self.init_layout()def init_widget(self):# tablewidgetself.table = QTableWidget()self.table.setColumnCount(2)self.table.setHorizontalHeaderLabels(['网站', 'Url'])self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)self.table.setAlternatingRowColors(True)self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 无法编辑def init_getdata(self):row_count = self.table.rowCount()self.table.setRowCount(row_count + 1)self.table.setItem(0, 0, QTableWidgetItem('百度'))self.table.setItem(0, 1, QTableWidgetItem('https://www.baidu.com/'))row_count = self.table.rowCount()self.table.setRowCount(row_count + 1)self.table.setItem(1, 0, QTableWidgetItem('腾讯视频'))self.table.setItem(1, 1, QTableWidgetItem('https://v.qq.com/'))def init_signal(self):self.table.cellDoubleClicked.connect(self.open_url)  # 双击打开网页def init_layout(self):v_layout = QVBoxLayout()v_layout.addWidget(self.table)self.setLayout(v_layout)def open_url(self, row, column):print(f'{row} {column}')if int(column) == 1:url = self.table.item(row, column).text()webbrowser.open(url)if __name__ == '__main__':os.environ["QT_IM_MODULE"] = "ibus"  # mac系统解决输入法不兼容app = QApplication(sys.argv)qt_material.apply_stylesheet(app, theme='light_pink.xml')window = Window()window.show()sys.exit(app.exec())
 
3. 总结
优点
-  
简单易用:提供了直接操作表格数据的接口。
 -  
灵活性高:支持动态加载数据、编辑单元格内容和嵌入控件。
 -  
功能丰富:支持表头设置、单元格合并、选择模式等功能。
 
适用场景
-  
数据展示(如成绩表、库存表)。
 -  
数据编辑(如员工信息管理、订单管理)。
 -  
动态数据加载(如数据库查询结果、CSV 文件数据)。
 
