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 11 Python
详解Python中的条件判断语句
May 14 Python
python 实时遍历日志文件
Apr 12 Python
python遍历小写英文字母的方法
Jan 02 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
django foreignkey(外键)的实现
Jul 29 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
python实现图像全景拼接
Mar 27 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 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
人族 TERRAN 概述
2020/03/14 星际争霸
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript 动态创建表格
2015/01/08 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
vue路由--网站导航功能详解
2019/03/29 Javascript
js实现随机数小游戏
2019/06/28 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python实现手机通讯录搜索功能
2018/02/22 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
爱国主义教育演讲稿
2014/08/26 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
2014年工程师工作总结
2014/11/25 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS