105.PyQt5_QStackedWidget_堆叠窗口控件

在这里插入图片描述

我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集

在这里插入图片描述

QStackedWidget 堆叠窗口控件

  • 描述
    • QTackedWidget是一个堆栈窗口控件,可以将一些控件堆叠在一起,但是同一时间只有一个控件可以显示
    • QStackedWidget是一个构建在QStackedLayout类之上的便利布局控件
    • QStackedWidget不提供用户切换页面的内在手段。这通常是通过QComboBox或QListWidget完成的
  • 继承自:QFrame
  • 功能作用
  • 构造函数
    QStackedWidget(parent)          # 创建QStackedWidget对象的同时设置父对象
    
  • 添加控件
    addWidget(QWidget) -> int              # 添加控件到QStackedWidget对象列表的最后,并返回索引号
    
    insertWidget(index, QWidget) -> int    # 在指定索引位置插入控件,并返回索引号
    
  • 获取控件&索引
    indexOf(QWidget) -> int                 # 获取指定控件的索引号
    
    widget(int) -> QWidget                  # 根据索引号获取控件
    
    currentIndex() -> int                   # 获取当前显示控件的索引
    
    currentWidget() -> QWidget              # 获取当前显示的控件
    
    
  • 当前显示
    setCurrentIndex(index)                  # 设置指定索引号控件为当前显示控件
    
    setCurrentWidget(QWidget)               # 设置指定控件为当前显示控件
    
  • 获取堆叠控件个数
    count()                                 # 获取QStackedWidget对象中堆叠控件的总个数
    
  • 移除控件
    removeWidget(QWidget)                   # 移除指定控件
    
    # removeWidget(widget(int))             # 嵌套使用,移除指定索引控件
    
  • **可用信号
    widgetRemoved(index)            # 移除控件时发射该信号,传递被移除控件的索引
    
    currentChanged(index)           # 当前显示控件发生改变时发射该信号,传递新显示控件的索引
    

  • 演示代码
  • 示例1:QStackedWidget-功能演示
    from PyQt5.Qt import *
    import sys
    
    
    class Windows(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QStackedWidget-功能演示')
            self.resize(500, 300)
            self.widget_list()
    
        def widget_list(self):
            stw = QStackedWidget()
            self.stw = stw
            w1 = QWidget()
            w2 = QWidget()
            w3 = QWidget()
            w4 = QWidget()
    
            QLabel('主页', w1).move(100, 100)
            QLabel('简介', w2).move(100, 100)
            QLabel('联系', w3).move(100, 100)
            QLabel('地址', w4).move(100, 100)
    
            w1.setStyleSheet('background-color: red;')
            w2.setStyleSheet('background-color: yellow;')
            w3.setStyleSheet('background-color: cyan;')
            w4.setStyleSheet('background-color: green;')
    
            stw.addWidget(w1)
            stw.addWidget(w2)
            stw.addWidget(w3)
            stw.addWidget(w4)
    
            cmb = QComboBox()
            items = ['主页', '简介', '联系', '地址']
            cmb.addItems(items)
    
            hlayout = QHBoxLayout()
            hlayout.addWidget(cmb, 1)
            hlayout.addWidget(stw, 4)
            self.setLayout(hlayout)
    
            cmb.currentIndexChanged[int].connect(self.open_window)
    
            stw.currentChanged.connect(lambda index: print(f'当前显示控件发生了改变,新控件索引{index}'))
    
        def open_window(self, index):
            self.stw.setCurrentIndex(index)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Windows()
    
        window.show()
        sys.exit(app.exec_())
    
    
  • 效果图
    • 105.PyQt5_QStackedWidget_堆叠窗口控件_第1张图片
  • 该示例中我们用的QComboBox控件做的选项栏,同样也可以用多个按钮,也可以用我们后面需要学到的ListView、ListWidget

你可能感兴趣的:(PyQt5,pyqt5,python,GUI,python,pyqt,qt5)