当有大量数据需要分页显示时,使用分页器组件进行页面之间的跳转和导航。样式参考 Element Plus,包含总条数显示和跳转输入框。
基础用法

from monkeyqt import MkPagination
# 创建分页器,总数据 100 条,每页展示 10 条pagination = MkPagination(total=100, page_size=10)
# 监听页码切换信号
pagination.pageChanged.connect(lambda page: print(f"当前跳转到第 {page} ))
API 属性与方法
MkPagination(total=0, page_size=10, current=1, parent=None)
| 参数 |
类型 |
默认值 |
说明 |
total |
int |
0 |
总数据条数 |
page_size |
int |
10 |
每页显示条目个数 |
current |
int |
1 |
默认初始页码 |
核心方法
| 方法名 |
参数 |
返回值 |
说明 |
set_total(total) |
int |
None |
更新总条数,重新计算页码并更新 UI |
set_page_size(size) |
int |
None |
动态更新每页条目数 |
set_current_page(page) |
int |
None |
代码设置当前页码,范围在 1 到总页数之间 |
属性 ( ((Qt Properties)
| 属性名称 |
类型 |
默认值 |
说明 |
current_page |
int |
1 |
获取当前选中的页码 |
total |
int |
0 |
获取或设置总条数 |
信号
| 信号名称 |
参数 |
说明 |
pageChanged |
(int) |
当页码被点击切换或跳转输入框回车确定时发射,参数为跳转的目标页码 |
示例代码
以下示例展示了分页器动态渲染数据列表的效果。
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QListWidget, QLabel
from monkeyqt import MkPagination
class PaginationDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Pagination Demo")
self.resize(500, 400)
layout = QVBoxLayout(self)
# 准备数据源 self.all_data = [f"数据条目 - #{i:03d}" for i in range(1, 126)] # 125条数据 #
# 1. 列表展示控件
self.list_widget = QListWidget()
layout.addWidget(self.list_widget)
# 2. 分页器 self.page_size = 10
self.pagination = MkPagination(total=len(self.all_data), page_size=self.page_size)
layout.addWidget(self.pagination)
# 监听页码切换
self.pagination.pageChanged.connect(self._render_page)
# 初始加载第一页 self._render_page(1)
def _render_page(self, page):
# 清空当前列表
self.list_widget.clear()
# 计算切片索引
start = (page - 1) * self.page_size
end = start + self.page_size
# 填充当前页数据 page_data = self.all_data[start:end]
self.list_widget.addItems(page_data)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = PaginationDemo()
window.show()
sys.exit(app.exec())