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 06 Python
python中xrange用法分析
Apr 15 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
numpy中矩阵合并的实例
Jun 15 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
如何基于Python实现自动扫雷
Jan 06 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Python如何实现远程方法调用
Aug 07 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
python和anaconda的区别
May 06 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
一个显示天气预报的程序
2006/10/09 PHP
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
浅谈js闭包理解
2019/03/28 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
浅谈Python中数据解析
2015/05/05 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python高阶爬虫实战分析
2018/07/29 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python如何读写字节数据
2020/08/05 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
美国创意之家:BulbHead
2017/07/12 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
出生医学证明样本
2014/01/17 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
幼儿发展评估方案
2014/06/11 职场文书
车间主任岗位职责
2015/02/03 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
python基础之匿名函数详解
2021/04/21 Python
Python实战之疫苗研发情况可视化
2021/05/18 Python