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 元组(Tuple)操作详解
Mar 11 Python
Python Tkinter基础控件用法
Sep 03 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python+splinter自动刷新抢票功能
Sep 25 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
python安装scipy的步骤解析
Sep 28 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
django使用JWT保存用户登录信息
Apr 22 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 Python
Pytest中skip skipif跳过用例详解
Jun 30 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
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
论文评语大全
2014/04/29 职场文书
大学生团员个人总结
2015/02/14 职场文书
地震慰问信
2015/02/14 职场文书
清明节寄语2015
2015/03/23 职场文书
关于军训的感想
2015/08/07 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js