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迭代用法实例教程
Sep 08 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
python绘图方法实例入门
May 19 Python
python 写入csv乱码问题解决方法
Oct 23 Python
python对excel文档去重及求和的实例
Apr 18 Python
python中的常量和变量代码详解
Jul 25 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
python儿童学游戏编程知识点总结
Jun 03 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
python复合条件下的字典排序
Dec 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
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
js操作iframe的一些方法介绍
2013/06/25 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
Vue2.0如何发布项目实战
2017/07/27 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python线程指南详细介绍
2017/01/05 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python反编译学习之字节码详解
2019/05/19 Python
Python 元组操作总结
2019/09/18 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
.NET概念性的面试题
2012/02/29 面试题
Shell编程面试题
2012/05/30 面试题
教育科学研究生自荐信
2013/10/09 职场文书
给老师的检讨书
2014/02/11 职场文书
爱我中华演讲稿
2014/05/20 职场文书
党的生日活动方案
2014/08/15 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
小学班主任自我评价
2015/03/11 职场文书
公司清洁工岗位职责
2015/04/15 职场文书