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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python中字典的基础知识归纳小结
Aug 19 Python
Python selenium文件上传方法汇总
Nov 19 Python
发布你的Python模块详解
Sep 15 Python
python制作websocket服务器实例分享
Nov 20 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Django Rest framework权限的详细用法
Jul 25 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
python 模拟登陆163邮箱
Dec 15 Python
Python中三种花式打印的示例详解
Mar 19 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
信用卡效验程序
2006/10/09 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
javascript StringBuilder类实现
2008/12/22 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
js实现微博发布小功能
2017/01/12 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python中退出多层循环的方法
2018/11/27 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
会计专业推荐信
2013/10/29 职场文书
军训学生自我鉴定
2014/02/12 职场文书
庆祝教师节主持词
2015/07/06 职场文书
工商局调档介绍信
2015/10/22 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
python和anaconda的区别
2022/05/06 Python
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL