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使用分治法实现求解最大值的方法
May 12 Python
python计算文本文件行数的方法
Jul 06 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
在Python中居然可以定义两个同名通参数的函数
Jan 31 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
使用python画社交网络图实例代码
Jul 10 Python
Python模块汇总(常用第三方库)
Oct 07 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
python实现进度条的多种实现
Apr 29 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 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
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
JavaScript静态的动态
2006/09/18 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
怎样写好自荐信和推荐信
2013/12/26 职场文书
班主任工作年限证明
2014/01/12 职场文书
北京申奥口号
2014/06/19 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server