我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 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_())
- 效果图
- 该示例中我们用的QComboBox控件做的选项栏,同样也可以用多个按钮,也可以用我们后面需要学到的ListView、ListWidget