python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法


Posted in Python onFebruary 27, 2020

PyQt5窗口布局控件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_())

运行效果如图

python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

代码分析

在这个例子中,在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)

实际开发中,做界面设计,当然一般是借助Qt designer,方便而高效。

python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

在Qt designer,QStackedWidget是上图这个东西,动手试试吧。

本文详细介绍了PyQt5窗口布局控件QStackedWidget使用方法,灵活使用QStackedWidget控件对你的项目会有很大的提升,更多关于PyQt5窗口布局控件QStackedWidget使用方法请查看下面的相关链接

Python 相关文章推荐
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
python函数局部变量用法实例分析
Aug 04 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
django js实现部分页面刷新的示例代码
May 28 Python
学习Django知识点分享
Sep 11 Python
Python partial函数原理及用法解析
Dec 11 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
AUC计算方法与Python实现代码
Feb 28 Python
python 实现批量图片识别并翻译
Nov 02 Python
用python实现一个简单的验证码
Dec 09 Python
Python对excel的基本操作方法
Feb 18 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 #Python
Python 格式化打印json数据方法(展开状态)
Feb 27 #Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 #Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 #Python
python json 递归打印所有json子节点信息的例子
Feb 27 #Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 #Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 #Python
You might like
把PHP安装为Apache DSO
2006/10/09 PHP
SMARTY学习手记
2007/01/04 PHP
paypal即时到账php实现代码
2010/11/28 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
实习期自我鉴定
2013/10/11 职场文书
社团招新策划书
2014/02/04 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
公证委托书标准格式
2014/09/11 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
工程催款通知书
2015/04/17 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB