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中类的继承代码实例
Oct 28 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
python实时分析日志的一个小脚本分享
May 07 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
Python requests接口测试实现代码
Sep 08 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/11/26 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
PHP abstract与interface之间的区别
2013/11/11 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JavaScript字符串对象
2017/01/14 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
python正则表达式中的括号匹配问题
2014/12/14 Python
python实现下载文件的三种方法
2017/02/09 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
什么是组件架构
2016/05/15 面试题
水毁工程实施方案
2014/04/01 职场文书
感恩的演讲稿
2014/05/06 职场文书
2015年中秋节主持词
2015/07/30 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers