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 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
Python中encode()方法的使用简介
May 18 Python
python多进程共享变量
Apr 06 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
Python基于WordCloud制作词云图
Nov 29 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
python实现超级玛丽游戏
Mar 18 Python
python opencv肤色检测的实现示例
Dec 21 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版 汉字转码的实现详解
2013/06/09 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
js模仿hover的具体实现代码
2013/12/30 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python下Fabric的简单部署方法
2015/07/14 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python爬取三国演义的实现方法
2016/09/12 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python单例模式的多种实现方法
2019/07/26 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
提高python代码运行效率的一些建议
2020/09/29 Python
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
信息专业个人的自我评价
2013/12/27 职场文书
日化店促销方案
2014/03/26 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
班级班风口号大全
2015/12/25 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Python Django ORM连表正反操作技巧
2021/06/13 Python
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript