PyQT5 QtableView翻页功能实现

#显示数据方法
def show_list(self, device_list_all):
# 分页处理
device_number = len(device_list_all)# 显示数据的条数
page_number = 10#每页显示几条数据
# 初始化分页按钮
if device_number == 0:#数据条数为0的处理逻辑,按钮置灰
self.btn_first_page.setEnabled(False)
self.btn_last_page.setEnabled(False)
self.btn_pre_page.setEnabled(False)
self.btn_next_page.setEnabled(False)
elif device_number // page_number == 0:#只有一页时的处理逻辑
self.btn_first_page.setEnabled(False)
self.btn_last_page.setEnabled(False)
self.btn_pre_page.setEnabled(False)
self.btn_next_page.setEnabled(False)
device_list = device_list_all#显示全部内容
else:#有多页的处理逻辑
if self.current_page == 1:#当前页是首页处理逻辑
self.btn_first_page.setEnabled(False)
self.btn_last_page.setEnabled(True)
self.btn_pre_page.setEnabled(False)
self.btn_next_page.setEnabled(True)
device_list = device_list_all[:device_number ]
elif (self.current_page == 0) or (self.current_page == device_number // page_number + 1):#当前页是尾页处理逻辑
self.current_page = device_number // page_number + 1
self.btn_first_page.setEnabled(True)
self.btn_last_page.setEnabled(False)
self.btn_pre_page.setEnabled(True)
self.btn_next_page.setEnabled(False)
device_list = device_list_all[(device_number // page_number ) * device_number :]
else:#当前页是中间页处理逻辑
self.btn_first_page.setEnabled(True)
self.btn_last_page.setEnabled(True)
self.btn_pre_page.setEnabled(True)
self.btn_next_page.setEnabled(True)
device_list = device_list_all[(self.current_page - 1) * page_number 😦(self.current_page - 1) * page_number + page_number )]

        # 刷新显示表格内容
        self.model.clear()
        self.model.setHorizontalHeaderLabels(['sequence', 'ID', 'code', 'descript', 'status', 'notice'])
        for ln in range((self.current_page - 1) * page_number , (self.current_page - 1) * page_number  + len(device_list)):
            item_0 = QStandardItem(str(ln + 1))
            item_0.setTextAlignment(Qt.AlignCenter)
            self.model.setItem(ln % page_number , 0, item_0)

        for row, linedata in enumerate(device_list):
            for col, itemdata in enumerate(linedata):
                item = QStandardItem(str(itemdata)) if itemdata is not None else QStandardItem('')
                item.setTextAlignment(Qt.AlignCenter)
                self.model.setItem(row, col + 1, item)
        self.tab_device.horizontalHeader().setSectionResizeMode(0, QHeaderView.Interactive)
        self.tab_device.setColumnWidth(0, 50)

#按钮槽方法
@pyqtSlot()
def on_btn_first_page(self):
self.current_page = 1
self.show_list(self.list_device)

def on_btn_last_page(self):
    self.current_page = 0
    self.show_list(self.list_device)

def on_btn_pre_page(self):
    self.current_page -= 1
    self.show_list(self.list_device)

def on_btn_next_page(self):
    self.current_page += 1
    self.show_list(self.list_device)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值