QStackedWidget 与 QStackedLayout 的用法区别

简介: import sys from PyQt5 import QtWidgets, QtCore class MyWidget(QtWidgets.QWidget): def __init__(self, i=0): super().

 

import sys
from PyQt5 import QtWidgets, QtCore


class MyWidget(QtWidgets.QWidget):
    def __init__(self, i=0):
        super().__init__()
        self.setWindowTitle('窗口 ' + str(i))
        label = QtWidgets.QLabel('标签 ' + str(i))
        layout = QtWidgets.QHBoxLayout(self)
        layout.addWidget(label)
        

class TestWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        
        layout = QtWidgets.QHBoxLayout(self)
        
        #stack  = QtWidgets.QStackedWidget() # ① Widget
        stack  = QtWidgets.QStackedLayout() # ② Layout

        list   = QtWidgets.QListWidget(self)
        list.setDragEnabled(True)
        list.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)

        layout.addWidget(list)
        #layout.addWidget(stack) # ① 对应 addWidget
        layout.addLayout(stack) # ② 对应 addLayout

        for i in range(10):
            stack.addWidget(MyWidget(i))
            list.addItem("窗口   %04i" % i)

        list.currentRowChanged.connect(stack.setCurrentIndex)


if __name__ == "__main__":
    app    = QtWidgets.QApplication(sys.argv)
    widget = TestWidget()
    #widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())

 

        # ... ...

        self.contentsWidget.currentItemChanged.connect(self.changePage)
        #self.contentsWidget.currentRowChanged.connect(self.pagesWidget.setCurrentIndex)


    def changePage(self, current, previous):
        if not current:
            current = previous
        self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current))

 

目录
相关文章
|
7月前
|
存储 C语言 C++
1. 认识C++和C的区别
1. 认识C++和C的区别
107 0
|
4月前
|
安全 数据安全/隐私保护 网络架构
CAPWAP 和 LWAPP 的区别
【8月更文挑战第24天】
116 0
|
7月前
|
索引
for each和for of的区别
for each和for of的区别
52 0
|
7月前
|
Web App开发 安全 应用服务中间件
浅谈C/S vs. B/S的区别
浅谈C/S vs. B/S的区别
207 0
|
安全 C#
C#委托事件的区别
C#委托事件的区别
172 0
|
安全 前端开发 Java
WebMvcConfigurationSupport 和 WebMvcConfigurer 区别你知道吗
WebMvcConfigurationSupport 和 WebMvcConfigurer 的使用过程中你是否踩坑了它们的区别是什么快来看看吧
639 0
|
JSON 数据格式
for...in/for...each/for...of的区别
for...in/for...each/for...of的区别
138 0
for...in/for...each/for...of的区别
|
C语言
%C和%S区别
%C和%S区别
270 0
|
JavaScript 前端开发 索引
for...in和for...of的区别
前言 在JavaScript中遍历数组通常是使用for...i循环,在ES5具有遍历数组功能的还有forEach、map、filter、some、every、reduce、reduceRight等。 for...in和for...of是两种增强型循环,for...in是ES5标准,在ES6中新增了for...of的循环方式。
119 0
for...in和for...of的区别
|
关系型数据库
Where and Having区别
Where和Having的异同 (1)where是查询返回结果之前进行过滤的 (2)having是查询返回结果之后,对结果进行过滤的 (3)在SQL中增加 HAVING 子句原因是,where关键字无法与聚合函数一起使用,having子句常跟group by一同使用,过滤分组...
1506 0