pyqt多頁(yè)面切換功能怎么實(shí)現(xiàn)

小億
233
2023-11-18 12:13:01

在PyQt中,可以使用QStackedWidget來(lái)實(shí)現(xiàn)多頁(yè)面切換的功能。QStackedWidget是一個(gè)堆疊的容器,可以將多個(gè)頁(yè)面放在其中,并可以通過(guò)切換當(dāng)前頁(yè)面來(lái)顯示不同的頁(yè)面。

以下是一個(gè)簡(jiǎn)單的示例代碼,演示了如何使用QStackedWidget實(shí)現(xiàn)多頁(yè)面切換功能:

from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QWidget, QStackedWidget
import sys

class Page1(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        layout.addWidget(QPushButton('Go to Page 2', clicked=lambda: window.switch_page(1)))
        self.setLayout(layout)

class Page2(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        layout.addWidget(QPushButton('Go to Page 1', clicked=lambda: window.switch_page(0)))
        self.setLayout(layout)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.stacked_widget = QStackedWidget()
        self.setCentralWidget(self.stacked_widget)

        self.pages = [Page1(), Page2()]
        for page in self.pages:
            self.stacked_widget.addWidget(page)

        self.switch_page(0)

    def switch_page(self, index):
        self.stacked_widget.setCurrentIndex(index)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

在上面的示例中,我們定義了兩個(gè)頁(yè)面(Page1和Page2),并且分別在頁(yè)面上放置了一個(gè)按鈕。在按鈕的clicked信號(hào)中,通過(guò)調(diào)用switch_page方法來(lái)切換頁(yè)面。在MainWindow類(lèi)中,我們創(chuàng)建了一個(gè)QStackedWidget,并將頁(yè)面添加到其中。通過(guò)調(diào)用setCurrentIndex方法可以切換當(dāng)前頁(yè)面。在初始化時(shí),默認(rèn)顯示第一個(gè)頁(yè)面。

運(yùn)行上述代碼,你將看到一個(gè)窗口,其中有兩個(gè)按鈕,分別可以切換到另一個(gè)頁(yè)面。

0