添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

QStackedWidget

QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局。QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件

实例:QStackedWidget的使用

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class StackedExample(QWidget):
    def __init__(self):
        super(StackedExample, self).__init__()
        #设置窗口初始位置和大小
        self.setGeometry(300,50,10,10)
        self.setWindowTitle('StackedWidget 例子')
        #创建列表窗口,添加条目
        self.leftlist=QListWidget()
        self.leftlist.insertItem(0,'联系方式')
        self.leftlist.insertItem(1,'个人信息')
        self.leftlist.insertItem(2,'教育程度')
        #创建三个小控件
        self.stack1=QWidget()
        self.stack2=QWidget()
        self.stack3=QWidget()
        self.stack1UI()
        self.stack2UI()
        self.stack3UI()
        #在QStackedWidget对象中填充了三个子控件
        self.stack=QStackedWidget(self)
        self.stack.addWidget(self.stack1)
        self.stack.addWidget(self.stack2)
        self.stack.addWidget(self.stack3)
        #水平布局,添加部件到布局中
        HBox=QHBoxLayout()
        HBox.addWidget(self.leftlist)
        HBox.addWidget(self.stack)
        self.setLayout(HBox)
        self.leftlist.currentRowChanged.connect(self.display)
    def stack1UI(self):
        layout=QFormLayout()
        layout.addRow('姓名',QLineEdit())
        layout.addRow('地址',QLineEdit())
        self.stack1.setLayout(layout)
    def stack2UI(self):
        # zhu表单布局,次水平布局
        layout = QFormLayout()
        sex = QHBoxLayout()
        # 水平布局添加单选按钮
        sex.addWidget(QRadioButton('男'))
        sex.addWidget(QRadioButton('女'))
        # 表单布局添加控件
        layout.addRow(QLabel('性别'), sex)
        layout.addRow('生日', QLineEdit())
        self.stack2.setLayout(layout)
    def stack3UI(self):
        # 水平布局
        layout = QHBoxLayout()
        # 添加控件到布局中
        layout.addWidget(QLabel('科目'))
        layout.addWidget(QCheckBox('物理'))
        layout.addWidget(QCheckBox('高数'))
        self.stack3.setLayout(layout)
    def display(self,i):
        #设置当前可见的选项卡的索引
        self.stack.setCurrentIndex(i)
if __name__ == '__main__':
    app=QApplication(sys.argv)
    demo=StackedExample()
    demo.show()
    sys.exit(app.exec_())

运行效果如图
这里写图片描述 这里写图片描述 这里写图片描述

在这个例子中,在QStackedWidget对象中填充了三个子控件

        self.stack1=QWidget()
        self.stack2=QWidget()
        self.stack3=QWidget()
        #在QStackedWidget对象中填充了三个子控件
        self.stack=QStackedWidget(self)
        self.stack.addWidget(self.stack1)
        self.stack.addWidget(self.stack2)
        self.stack.addWidget(self.stack3)

每个子控件都可以有自己的布局,包含特定的表单元素,QStackedWidget控件不能在页面之间进行切换,它与当前选中的QListWidget控件中的选项进行连接

        #创建列表窗口,添加条目
        self.leftlist=QListWidget()
        self.leftlist.insertItem(0,'联系方式')
        self.leftlist.insertItem(1,'个人信息')
        self.leftlist.insertItem(2,'教育程度')
        self.leftlist.currentRowChanged.connect(self.display)

将QListWidget的currentRowChanged信号与display()槽函数相关联,从而改变堆叠控件的视图

   def display(self,i):
        #设置当前可见的选项卡的索引
        self.stack.setCurrentIndex(i)

相关文件及下载地址

https://download.csdn.net/download/jia666666/10609488

Q Stack ed Widget 是一个在同一时间只能显示一个 widget 控件 ,可以编写多个 widget 入栈,但是不会同一时间显示出来,需要切换显示。 这是引用网上大佬写的基础代码 import sys from PyQt5 .QtGui import * from PyQt5 .QtCore import * from PyQt5 .Qt Widget s import * class Stack ed Ex... 为了实现点击item,item删除,当QList Widget 的item为空时,关闭窗口。 首先想到的是用removeItem Widget ,但是结果并不像我预期那样的。如下效果: removeItem Widget 不会删除item,而是删除item的 widget 。从QList Widget 中删除item的正确方法应该是takeItem(row),效果如下: 代码示例: # -*- coding... QDock Widget 是一个可以停靠在QMainWindow内的窗口 控件 ,它可以保持在浮动状态或者在指定位置作为子窗口附加到主窗口中,QMainWindow类的主窗口对象保留有一个用于停靠窗口的区域,这个区域在 控件 的中央周围 基于Python和 PyQt5 实现同一窗口下多 界面 切换 基于 pyqt5 控件 tab Widget 结合按钮点击实现同窗口下 界面 切换。每个子 界面 均可拓展相应的功能。 # Form implementation generat ed from reading ui file 'MainUi.ui' # Creat ed by: PyQt5 UI code generator 5.13.0 # WARNING! Al 有时候我们可能会面临这样一种情况:所开发的程序包含了太多的 控件 ,导致一个窗口装载不下或者装载的 控件 太多而不美观。本篇博文就来解决这个问题,即如何在现有的窗口空间中装载更多的 控件