# encoding: utf-8
# 版权所有 2024 涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# os : windows 10
# database : mysql 9.0 sql server 2019, poostgreSQL 17.0
# Datetime : 2024/12/8 9:21
# User : geovindu
# Product : PyCharm
# Project : Pysimple
# File : pyqt6tablepaging.py
# explain : 学习
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QPushButton
class MainWindow(QWidget):
"""
"""
def __init__(self):
"""
"""
super().__init__()
self.setWindowTitle("Table with Paging")
self.resize(300,300)
# Sample data
self.data = [
['李二', '25', '深圳'],
['赵三', '30', '上海'],
['何四', '35', '重庆'],
['王五', '40', '天津'],
['张六', '28', '北京'],
['刘八', '32', '南京'],
['肖八', '27', '西安'],
['钱九', '36', '井岗山'],
['江十', '29', '南昌'],
['汪一', '31', '杭州'],
]
self.pageSize = 3
self.currentPage = 0
self.rect=(2,4,200,280)
self.table = QTableWidget()
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['姓名', '年龄', '城市'])
self.table.geometry=self.rect
self.rect2 = (2, 220, 220, 280)
self.prevButton = QPushButton("上一页")
self.nextButton = QPushButton("下一页")
self.prevButton.clicked.connect(self.prevPage)
self.nextButton.clicked.connect(self.nextPage)
self.prevButton.geometry=self.rect2
layout = QVBoxLayout()
layout.addWidget(self.table)
layout.addWidget(self.prevButton)
layout.addWidget(self.nextButton)
self.setLayout(layout)
self.updateTable()
def updateTable(self):
"""
:return:
"""
startIndex = self.currentPage * self.pageSize
endIndex = startIndex + self.pageSize
self.table.setRowCount(0)
for row_data in self.data[startIndex:endIndex]:
row = self.table.rowCount()
self.table.insertRow(row)
for col, item in enumerate(row_data):
self.table.setItem(row, col, QTableWidgetItem(item))
self.prevButton.setEnabled(self.currentPage > 0)
self.nextButton.setEnabled(endIndex < len(self.data))
def prevPage(self):
"""
:return:
"""
self.currentPage -= 1
self.updateTable()
def nextPage(self):
"""
:return:
"""
self.currentPage += 1
self.updateTable()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()