首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PyQT中创建分页栏?

如何在PyQT中创建分页栏?
EN

Stack Overflow用户
提问于 2022-07-22 06:33:53
回答 1查看 219关注 0票数 1

我需要从SQL表中分页数据。

我在PyQT或Pyside中找不到任何有关分页的信息。你能帮我一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-22 07:50:07

处理分页的一种方法是使用QStackedWidget来模拟页面本身,使用常规的QLabel作为页面链接。然后,您可以覆盖每个标签( mousePressEvent ),向堆叠小部件发出一个信号,将当前索引设置为单击的标签中的页码。

下面是使用PySide6演示所建议的策略的最小可重现性示例。

代码语言:javascript
运行
复制
import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *

class PageLink(QLabel):

    clicked = Signal([str])  # Signal emited when label is clicked

    def __init__(self, text, parent=None):
        super().__init__(text, parent=parent)
        self.setTextInteractionFlags(Qt.LinksAccessibleByMouse)
        self.setStyleSheet("color: blue;") # set text color to blue to emulate a link
        self.setCursor(Qt.PointingHandCursor)  # set the cursor to link pointer

    def mousePressEvent(self, event):
        self.clicked.emit(self.text())   # emit the clicked signal when pressed
        return super().mousePressEvent(event)


class MainWindow(QMainWindow):

    def __init__(self, parent=None) -> None:
        """Main Window Setup"""
        super().__init__(parent=parent)
        self.setWindowTitle("Pagination Demonstration")
        self.resize(600,400)
        self.central = QWidget(parent=self)
        self.layout = QVBoxLayout(self.central)
        self.setCentralWidget(self.central)

        # create the stacked widget that will contain each page...
        self.stackWidget = QStackedWidget(parent=self)
        self.layout.addWidget(self.stackWidget)

        # setup the layout for the page numbers below the stacked widget
        self.pagination_layout = QHBoxLayout()
        self.pagination_layout.addStretch(0)
        self.pagination_layout.addWidget(QLabel("<"))

        # create pages and corresponding labels
        for i in range(1, 6):
            page_link = PageLink(str(i), parent=self)
            self.pagination_layout.addWidget(page_link)
            page = QWidget()
            layout = QVBoxLayout(page)
            layout.addWidget(QLabel(f"This is page number {i} of 5"))
            self.stackWidget.addWidget(page)
            page_link.clicked.connect(self.switch_page)
        self.pagination_layout.addWidget(QLabel(">"))
        self.layout.addLayout(self.pagination_layout)

    def switch_page(self, page):
        self.stackWidget.setCurrentIndex(int(page) - 1)

app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73076015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档