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函数的笔记整理
Apr 07 Python
python生成IP段的方法
Jul 07 Python
Python从零开始创建区块链
Mar 06 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
python中的 zip函数详解及用法举例
Feb 16 Python
python实现与redis交互操作详解
Apr 21 Python
新手学python应该下哪个版本
Jun 11 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
sae使用smarty模板的方法
2013/12/17 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
28个JS验证函数收集
2010/03/02 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python实现简易数码时钟
2021/02/19 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
模具数控专业自荐信
2014/01/27 职场文书
工程质量月活动方案
2014/02/19 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
关于学习的演讲稿
2014/05/10 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL