QTabWidget

常用方法

方法 描述
addTab() 将一个控件添加到Tab控件的选项卡中
insertTab() 将一个Tab控件的选项卡插入到指定的位置
removeTab() 根据指定的索引删除Tab控件
setCurrentIndex() 设置当前可见的选项卡所在的索引
setCurrentWidget() 设置当前可见的界面
setTabBar() 设置选项卡栏的小控件
setTabPosition() 设置选项卡的位置
- QTabWidget.North:显示在页面的上方
- QTabWidget.South:显示在页面的下方
- QTabWidget.West:显示在页面的左侧
- - QTabWidget.East:显示在页面的右侧
setTabText() 定义Tab选项卡的显示值

常用信号

信号 描述
currentChanged 切换当前页面时发射该信号
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *class TabDemo(QTabWidget):def __init__(self, parent=None):super(TabDemo, self).__init__(parent)   self.tab1 = QWidget()self.tab2 = QWidget()self.tab3 = QWidget()self.addTab(self.tab1,"Tab 1")self.addTab(self.tab2,"Tab 2")self.addTab(self.tab3,"Tab 3")self.tab1UI()self.tab2UI()self.tab3UI()self.setWindowTitle("Tab 例子")def tab1UI(self):layout = QFormLayout()layout.addRow("姓名",QLineEdit())layout.addRow("地址",QLineEdit())self.setTabText(0,"联系方式")self.tab1.setLayout(layout)def tab2UI(self):layout = QFormLayout()sex = QHBoxLayout()sex.addWidget(QRadioButton("男"))    sex.addWidget(QRadioButton("女"))layout.addRow(QLabel("性别"),sex)layout.addRow("生日",QLineEdit())self.setTabText(1,"个人详细信息")self.tab2.setLayout(layout)def tab3UI(self):layout=QHBoxLayout()layout.addWidget(QLabel("科目"))layout.addWidget(QCheckBox("物理"))layout.addWidget(QCheckBox("高数"))self.setTabText(2,"教育程度")self.tab3.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)demo = TabDemo()demo.show()sys.exit(app.exec_())

在这个例子中,一个表单的内容分为3组,每一组小控件都显示在不同的选项卡中,顶层窗口是一个QTabWidget控件,将三个选项卡添加进去

        #创建3个选项卡小控件窗口self.tab1=QWidget()self.tab2=QWidget()self.tab3=QWidget()#将三个选项卡添加到顶层窗口中self.addTab(self.tab1, "Tab 1")self.addTab(self.tab2, "Tab 2")self.addTab(self.tab3, "Tab 3")

使用表单布局管理器,每个选项卡显示子表单的内容

self.setTabText(0,'联系方式')
self.setTabText(

QStackedWidget

QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局。QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件

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_())

在这个例子中,在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)

QDockWidget

常用方法

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *class DockDemo(QMainWindow):def __init__(self,parent=None):super(DockDemo, self).__init__(parent)#设置水平布局layout=QHBoxLayout()#实例化菜单栏bar=self.menuBar()#创建主菜单file,在其中添加子菜单file=bar.addMenu('File')file.addAction('New')file.addAction('Save')file.addAction('quit')#创建QDockWidget窗口(标题,自身窗口)self.items=QDockWidget('Dockable',self)#实例化列表窗口,添加几个条目self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口区域设置QWidget,添加列表控件self.items.setWidget(self.listWidget)#设置dock窗口是否可以浮动,True,运行浮动在外面,自动与主界面脱离,False,默认浮动主窗口内,可以手动脱离self.items.setFloating(False)#设置QTextEdit为中央小控件self.setCentralWidget(QTextEdit())#将窗口放置在中央小控件的右侧self.addDockWidget(Qt.RightDockWidgetArea,self.items)self.setLayout(layout)self.setWindowTitle('Dock 例子')
if __name__ == '__main__':app=QApplication(sys.argv)demo=DockDemo()demo.show()sys.exit(app.exec_())

可以拖动

在这个例子中,顶层窗口是一个QMainWindow对象,QTextEdit对象是它的中央小控件

self.setCentralWidget(QTextEdit())

首先创造可停靠的窗口Item

self.items=QDockWidget('Dockable',self)

然后,在停靠窗口内添加QListWidget对象

        self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口区域设置QWidget,添加列表控件self.items.setWidget(self.listWidget)

最后,停靠窗口放置在中央小控件的右侧

self.addDockWidget(Qt.RightDockWidgetArea,self.items)

电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。

pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget相关推荐

  1. python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...

    PyQt5选项卡控件QTabWidget简介 QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选项卡可以查看对应的界面,如果在一个窗口中显示的输入字段很多 ...

  2. PyQt5高级界面控件之QDockWidget

    使用PyQt5高级界面控件之QDockWidget实现主页面模块关闭与显示 前言 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口 ...

  3. 实战PyQt5: 052-停靠窗口控件QDockWidget

    QDockWidget简介 在很多桌面应用软件中,比如Qt的C++ IDE集成开发环境Qt Creater, 宇宙第一集成开发环境Visual Studio等工程软件,都使用了停靠窗口布局,这样做有一 ...

  4. pyqt5讲解13:图形与特效,设置窗口大小

    一.窗口的风格 可以为每个QWidget都设置风格 setStyle(QStyle style) 获取当前平台支持的原有的QStyle样式 QstyleFactory.keys() 对QApplica ...

  5. pyqt5讲解2:QPushButton,QRadioButton,QCheckBox

    按钮QPushButton 常用方法 描述 setCheckable() 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态 toggle() 在按钮状态之间进行切换 setI ...

  6. pyqt5讲解10:布局管理讲解大全

    一.绝对布局 使用move(x,y)的方法. 绝对布局: 如果改变屏膜的大小,控件的位置不会发生变化, 不同 屏膜显示有区别 # -*- coding: utf-8 -*-'''[简介]PyQT5中A ...

  7. pyqt5讲解9:时间模块timer和网页交互

    time 如果要在应用程序中周期性地进行某项操作,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器.要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应 ...

  8. pyqt5讲解6:菜单栏,工具栏,状态栏

    菜单栏QMenuBar 方法 描述 menuBar() 用于返回主窗口的QMenuBar对象 addMenu() 将菜单添加到菜单栏: addAction() 在菜单中进行添加某些操作: setEna ...

  9. pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap

    1.QPainter 常用方法 方法 描述 begin() 开始在目标设备上绘制 drawArc() 在起始角度和最终角度之间画弧 drawEliipse() 在一个矩形内画一个椭圆 drawLine ...

最新文章

  1. lnmp一键安装脚本
  2. mysql 账号权限过期_Mysql用户忘记密码及密码过期问题的处理方法
  3. yii2 请求外部api_微服务架构之「 API网关 」
  4. 一些Java面试技巧分享,你不能错过!
  5. 射命丸文 (Standard IO)
  6. 《像计算机科学家一样思考Python》——4.4 封装
  7. iOS 自定义字体设置
  8. 2019 第四季度计划
  9. upload.render多文件上传怎么实现一次性上传多个文件_照片和视频怎么检索?请使用属性查询...
  10. 刷机后IMEI丢失如何能刷回来
  11. AspNetPager常用属性及用法 / URLRewrite伪静态与AspNetPager分页控件的结合
  12. android手机分辨率,xDpi,yDpi,尺寸等各种相关物理参数
  13. Python 机器人学习手册:1~5
  14. ear的英语怎么念_ears用英语怎么读
  15. Vue3 + TS(一)- 邂逅Vue
  16. html实现鼠标悬停效果实现
  17. 工厂自动化的生产线属于计算机应用,计算机试题
  18. 问卷调查:vue element动态生成表单、表单校验以及表单提交
  19. c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用
  20. 2020年HIT行业企业营收排行榜(转载)

热门文章

  1. Struct2中三种获取表单数据的方式
  2. 【安全系列之加密算法】常用安全的加密算法
  3. Java实现doc或xls转PDF
  4. PaddleOCR——Docker环境下基于HubServing模式部署Restful API服务(CPU版本)
  5. JAVA——TCP连接中Socket的正确关闭方式
  6. 【笔记 】栈底层 循环队列的处理 链栈 链队列
  7. WEBMIN在命令行下的安装
  8. Windows10,Maven配置 电脑重启失效
  9. Windows下,启动Redis闪退 问题解决方案
  10. 高三英语作文【展示】——那夕阳下的奔跑是我逝去的青春