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 24 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
python对文件目录的操作方法实例总结
Jun 24 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
利用Python第三方库实现预测NBA比赛结果
Jun 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 APC缓存配置、使用详解
2014/03/06 PHP
详解php的socket通信
2015/08/11 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
法人委托书范本
2014/04/04 职场文书
供电工程专业求职信
2014/08/09 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
先进基层党组织材料
2014/12/25 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
小学美术教学反思
2016/02/17 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL