首页 > 编程语言 >python: pyQt6 table paging

python: pyQt6 table paging

时间:2024-12-08 09:44:28浏览次数:2  
标签:__ python self page paging table prev button

 

# 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 = [
            ['Alice', '25', 'New York'],
            ['Bob', '30', 'Los Angeles'],
            ['Charlie', '35', 'Chicago'],
            ['David', '40', 'San Francisco'],
            ['Emily', '28', 'Seattle'],
            ['Frank', '32', 'Boston'],
            ['Grace', '27', 'Miami'],
            ['Harry', '36', 'Dallas'],
            ['Ivy', '29', 'Atlanta'],
            ['Jack', '31', 'Denver'],
        ]

        self.page_size = 3
        self.current_page = 0
        self.rect=(2,4,200,280)
        self.table = QTableWidget()
        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(['Name', 'Age', 'City'])
        self.table.geometry=self.rect

        self.rect2 = (2, 220, 220, 280)

        self.prev_button = QPushButton("Previous")
        self.next_button = QPushButton("Next")

        self.prev_button.clicked.connect(self.prev_page)
        self.next_button.clicked.connect(self.next_page)
        self.prev_button.geometry=self.rect2
        layout = QVBoxLayout()
        layout.addWidget(self.table)
        layout.addWidget(self.prev_button)
        layout.addWidget(self.next_button)
        self.setLayout(layout)

        self.update_table()

    def update_table(self):
        start_index = self.current_page * self.page_size
        end_index = start_index + self.page_size

        self.table.setRowCount(0)

        for row_data in self.data[start_index:end_index]:
            row = self.table.rowCount()
            self.table.insertRow(row)
            for col, item in enumerate(row_data):
                self.table.setItem(row, col, QTableWidgetItem(item))

        self.prev_button.setEnabled(self.current_page > 0)
        self.next_button.setEnabled(end_index < len(self.data))

    def prev_page(self):
        self.current_page -= 1
        self.update_table()

    def next_page(self):
        self.current_page += 1
        self.update_table()


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

  

标签:__,python,self,page,paging,table,prev,button
From: https://www.cnblogs.com/geovindu/p/18593071

相关文章

  • 用Python开发一个经典打砖块小游戏
    Python的pygame库让我们可以轻松开发经典的小游戏。今天,我们将实现一个“打砖块”小游戏,带你体验游戏开发的乐趣。一、游戏设计1.1游戏规则玩家通过移动滑板接住弹起的球。球撞击砖块会让砖块消失,玩家得分。如果球落地,游戏失败。1.2技术点碰撞检测:检测球与......
  • 用Python开发“迷你井字棋”小游戏
    “井字棋”是一种简单但极具策略性的游戏,玩家通过在3x3的棋盘上布局来形成三连线。本篇文章将介绍如何使用Python和pygame库实现一个互动性的“井字棋”小游戏。一、游戏规则玩家交替落子,分别使用“X”和“O”标记。在任意行、列或对角线形成三连线的玩家获胜。如果棋......
  • 【WRF-Urban】人为热排放数据AHF转化为二进制格式(Python)
    人为热排放数据AHF转化为二进制格式数据准备:空间分布的人为热排放数据数据处理:geotiff→tiff(二进制)编制Index_template基于Python代码将geotiff→tiffWPS中预处理参考WRF-Urban中,导入人为热排放数据AHF的详细说明可参见另一博客-【WRF-Urban】增加静态空间......
  • Python Selenium 各浏览器驱动下载与配置使用(详细流程)
    1、安装pipinstallselenium2、浏览器驱动下载Chrome(google)浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html 或 https://sites.google.com/a/chromium.org/chromedriver/home. 下载地址:http://chromedriver.storage.googleapis.com/inde......
  • python: Multi Document Interface (MDI) using PyQt6
     #encoding:utf-8#版权所有2024涂聚文有限公司#许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎#描述:pipinstallpyqt6#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#os:windows10#database:my......
  • 数据分析常用的特征选择方法及其Python实现
    数据分析常用的特征选择方法及其Python实现1、概述特征选择是机器学习工作流中的一个重要步骤,是为了在原始特征集中选择最有信息量的特征,以提高模型的性能、减少过拟合风险,并加速训练过程。scikit-learn库提供了多种特征选择方法,主要有:特征重要性(分类器模型:xgboost、梯......
  • 聪明办法学Python Task05&&Task06
    列表详解追加append只会在列表的末尾添加值l=[1,2,3]l.append(4)print(l)显示1,2,3,4插入insertl.insert(索引,插入的值)extend(字符串,字典)删除*pop(可指定,写索引,默认最后一个)*remove(写元素)count(统计出现次数)index(显示元素索引)clear(清空列表)revers......
  • Python 爬虫验证码处理方案
    Python爬虫验证码处理方案简介嗨,大家好,我是太上问情,一个学习爬虫好几年都还没有真正入门的小趴菜。本文记录本人Python爬虫学习过程中,验证码处理的各种解决方案,欢迎大家指正。本人计划在本文完成如下验证码的处理,目前一个都没有完成,希望我能很快完成!数字验证码字......
  • Python 中的 __slots__ 属性有什么作用?
    __slots__是Python类中的一种特殊属性,它允许你显式地声明一个类的实例可以拥有的属性。这不仅有助于节省内存,还能提高属性访问的速度,并且防止动态添加不属于设计的属性。在大型项目或者对性能敏感的应用程序中,正确使用__slots__可以带来显著的好处。__slots__ 的作用......
  • Python知识分享第二十一天-装饰器&正则
    进阶语法上下文管理器 概述 一个类只要实现了 __enter__() __exit__() 它就是上下文管理器类它的对象称之为上下文管理器对象 with语法解释 格式 with上下文管理器对象:代码块 特点 当with的代码执行完毕后会自动释放上下文管理器对象 ......