qtablewidget分页显示
时间: 2023-07-10 08:42:47 浏览: 102
要在QTableWidget中实现分页显示,可以使用QTableWidget的setRowCount()和setRange()方法。以下是一个简单的示例:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QWidget, QVBoxLayout, QPushButton
from PyQt5.QtCore import Qt
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.table = QTableWidget()
self.table.setColumnCount(2)
self.table.setHorizontalHeaderLabels(['Name', 'Age'])
self.btn_prev = QPushButton('Prev')
self.btn_prev.clicked.connect(self.prev_page)
self.btn_next = QPushButton('Next')
self.btn_next.clicked.connect(self.next_page)
self.page_size = 10
self.current_page = 0
self.data = [('Alice', 25), ('Bob', 30), ('Charlie', 35), ('David', 40), ('Eva', 45),
('Frank', 50), ('Grace', 55), ('Henry', 60), ('Ivy', 65), ('Jack', 70)]
self.show_table()
layout = QVBoxLayout()
layout.addWidget(self.table)
layout.addWidget(self.btn_prev)
layout.addWidget(self.btn_next)
self.setLayout(layout)
def show_table(self):
self.table.setRowCount(self.page_size)
start_index = self.current_page * self.page_size
end_index = (self.current_page + 1) * self.page_size
for i, (name, age) in enumerate(self.data[start_index:end_index]):
self.table.setItem(i, 0, QTableWidgetItem(name))
self.table.setItem(i, 1, QTableWidgetItem(str(age)))
self.table.setRange(0, 0, self.page_size, 2)
def prev_page(self):
if self.current_page > 0:
self.current_page -= 1
self.show_table()
def next_page(self):
if self.current_page < len(self.data) // self.page_size:
self.current_page += 1
self.show_table()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在该示例中,我们创建了一个QTableWidget,该表格显示每个人的姓名和年龄。我们还创建了两个按钮,一个用于向前翻页,另一个用于向后翻页。我们将每页显示的行数设置为10,并使用当前页和数据列表来计算要显示的行。在show_table()方法中,我们使用setRowCount()和setRange()方法来设置要显示的行和列。在prev_page()和next_page()方法中,我们检查当前页是否可用,并相应地更新当前页并显示新的表格。
阅读全文