pyqt5 tablelist
时间: 2025-05-19 08:23:28 浏览: 10
### PyQt5 Table List Widget Example Usage
PyQt5 提供了一个强大的 `QTableWidget` 类来创建表格视图并管理数据。下面是一个关于如何使用 `QTableWidget` 创建一个简单的表单列表的示例。
#### 设置 QTableWidget 基本结构
可以通过设置行数和列数以及填充单元格中的内容来初始化 `QTableWidget`:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_widget = QTableWidget(self)
self.setCentralWidget(self.table_widget)
# Set number of rows and columns
self.table_widget.setColumnCount(3)
self.table_widget.setRowCount(4)
# Add headers to the table
self.table_widget.setHorizontalHeaderLabels(['Name', 'Age', 'City'])
# Populate the table with data
items = [
['Alice', '28', 'New York'],
['Bob', '24', 'Los Angeles'],
['Charlie', '30', 'Chicago'],
['David', '27', 'Houston']
]
for row_index, row_data in enumerate(items):
for col_index, cell_data in enumerate(row_data):
item = QTableWidgetItem(cell_data)
self.table_widget.setItem(row_index, col_index, item)
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
上述代码展示了如何通过嵌套循环向 `QTableWidget` 添加项目,并设置了水平方向上的标题[^1]。
#### 动态更新表格内容
如果需要动态更改或添加新条目到现有的 `QTableWidget` 表格中,则可以利用其内置方法如 `.insertRow()` 和 `.setItem()`. 下面展示了一种增加新记录的方式:
```python
def add_new_record(self, name, age, city):
current_row_count = self.table_widget.rowCount()
self.table_widget.insertRow(current_row_count)
self.table_widget.setItem(current_row_count , 0, QTableWidgetItem(name))
self.table_widget.setItem(current_row_count , 1, QTableWidgetItem(age))
self.table_widget.setItem(current_row_count , 2, QTableWidgetItem(city))
# 使用实例
window.add_new_record('Eve', '29', 'San Francisco')
```
此函数接受三个参数分别代表姓名、年龄和城市,随后将其作为新的一行加入至表格底部[^1].
#### 获取选中项的信息
当用户点击某一行或者某些特定单元格时,可能希望获取这些被选中的信息做进一步处理。这可通过监听信号槽机制完成:
```python
selected_rows = self.table_widget.selectionModel().selectedRows()
for index in sorted(selected_rows):
print(f"Row {index.row()} is selected.")
for column in range(self.table_widget.columnCount()):
try:
data = str(self.table_widget.item(index.row(), column).text())
print(f"\tColumn {column}: {data}")
except AttributeError:
print("\tNo value found")
```
这里遍历所有选定行并通过迭代每列提取对应的数据值[^1]. 如果某个单元格为空则会抛出异常因此加入了错误捕获逻辑.
阅读全文
相关推荐


















