QTabWidget简介

在GUI应用软件中,多页面的切换的使用范围十分广泛,在操作过程中,用户使用鼠标点击不同的标题栏就可以方便展示不同页面的内容,众多界面共用一块显示区域,在有限的就显示区域中可以很方便地位用户显示更多的信息。

Qt为多页面切换的实现提供了一个专门的控件QTabWidget, 它可以实现在同一区域中自由切换不同页面的内容,该控件是一个容器类控件,并提供友好的页面切换方式。

QTabWidget常用方法有:

  • addTab(): 添加一个标签;
  • insertTab(): 在指定位置插入一个标签;
  • removeTab(): 删除指定索引的标签;
  • setTabText(): 设置指定索引标签的文本信息;
  • tabText(): 获得指定索引标签的文本信息;
  • setTabIcon(): 设置指定索引标签的图标;
  • tabIcon(): 获得指定索引标签的图标;
  • currentWidget(): 获得当前活动标签的部件;
  • widget(): 获得指定标签索引的部件;
  • indexOf(): 获得指定部件的标签索引;
  • count(): 总标签数;
  • setTabPosition(): 设置标签的显示位置,值为(北:QTabWidget.North, 南:QTabWidget.South, 西:QTabWidget.West, 东:QTabWidget.East);
  • setTabShape(): 设置标签的形状, 值为:(四边形:QTabWidget.Rounded, 三角形:QTabWidget.Triangular)。

QTabWidget常用信号:

  • currentChanged: 当前标签页发生改变后,发射该信号;
  • tabCloseRequested: 标签页关闭请求时,发射该信号;
  • tabBarClicked: 单击了标签条,发射该信号;
  • tabBarDoubleClicked: 双击了标签条,发射该信号。

QTabWidget类继承关系:

测试QTabWidget

创建文件qtabwidget,假设我们设计一个win10系统文件右键菜单属性对话框,其主要内容就是由选项卡控件实现, 在这里实现其选项卡框架, 完整代码如下:

import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QFontfrom PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget,                              QTabWidget, QMenuBar, QMenu, QAction,                             QActionGroup, QVBoxLayout, QLabel) class DemoTabWidget(QMainWindow):    def __init__(self, parent=None):        super(DemoTabWidget, self).__init__(parent)                    # 设置窗口标题        self.setWindowTitle('实战PyQt5: QTabWidget Demo!')              # 设置窗口大小        self.resize(480, 360)              self.initUi()            def initUi(self):                self.initMenu()                self.tw = QTabWidget(self)        self.tw.addTab(self.createWidget(0), '常规')        self.tw.addTab(self.createWidget(1), '快捷方式')        self.tw.addTab(self.createWidget(2), '兼容性')        self.tw.addTab(self.createWidget(3), '安全')        self.tw.addTab(self.createWidget(4), '详细信息')        self.tw.addTab(self.createWidget(5), '以前的版本')                self.setCentralWidget(self.tw)                def initMenu(self):        menuBar = self.menuBar()        #添加一个菜单项,在菜单项下课添加子菜单项        fileMenu = menuBar.addMenu('文件')        aExit = QAction('Exit', self)        aExit.triggered.connect(self.close)        fileMenu.addAction(aExit)                #标签条位置控制        posMenu = menuBar.addMenu('标签条位置')                aNorth = QAction('上方', self)        aNorth.setCheckable(True)        aNorth.setChecked(True)        aNorth.triggered.connect(lambda:self.changeTabPos(0))        aSouth = QAction('下方', self)        aSouth.setCheckable(True)        aSouth.triggered.connect(lambda:self.changeTabPos(1))        aWest = QAction('左边', self)        aWest.setCheckable(True)        aWest.triggered.connect(lambda:self.changeTabPos(2))        aEast = QAction('右边', self)        aEast.setCheckable(True)        aEast.triggered.connect(lambda:self.changeTabPos(3))            posGroup = QActionGroup(self)        posGroup.addAction(aNorth)        posGroup.addAction(aSouth)        posGroup.addAction(aWest)        posGroup.addAction(aEast)                posMenu.addAction(aNorth)        posMenu.addAction(aSouth)        posMenu.addAction(aWest)        posMenu.addAction(aEast)                #标签条形状        shapeMenu = menuBar.addMenu('标签条形状')        aRounded = QAction('圆角矩形', self)        aRounded.setCheckable(True)        aRounded.setChecked(True)        aRounded.triggered.connect(lambda:self.changeTabShape(0))        aTriangular = QAction('三角形', self)        aTriangular.setCheckable(True)        aTriangular.triggered.connect(lambda:self.changeTabShape(1))                shapeGroup = QActionGroup(self)        shapeGroup.addAction(aRounded)        shapeGroup.addAction(aTriangular)                shapeMenu.addAction(aRounded)        shapeMenu.addAction(aTriangular)            def changeTabPos(self, index):        switcher = {            0: QTabWidget.North,            1: QTabWidget.South,            2: QTabWidget.West,            3: QTabWidget.East        }        self.tw.setTabPosition(switcher.get(index))            def changeTabShape(self, index):        if index == 0:            self.tw.setTabShape(QTabWidget.Rounded)        else:            self.tw.setTabShape(QTabWidget.Triangular)                def createWidget(self, index):        wid = QWidget()        layout = QVBoxLayout(wid)        label = QLabel(wid)        label.setAlignment(Qt.AlignCenter)        label.setFont(QFont(self.font().family(), 36))        label.setText("选项卡 {}".format(index + 1))                layout.addWidget(label)        wid.setLayout(layout)        return wid    if __name__ == '__main__':    app = QApplication(sys.argv)    window = DemoTabWidget()    window.show()    sys.exit(app.exec())

运行结果如下图:

测试QTabWidget

本文知识点

  • 使用QTabWidget添加多个选项卡;
  • 改变选项卡标签的显示位置;
  • 改变选项卡标签的形状;
  • 使用QActionGroup实现一组菜单项的单选功能;
  • 改变QLabel字体的尺寸。

喜欢本文内容就收藏,点赞,评论,关注和转发。

qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget相关推荐

  1. 文本编辑器查看 cprintf颜色_实战PyQt5: 028-纯文本编辑控件QPlainTextEdit

    QPlainTextEdit简介 QPlainTextEdit小部件是一个用于编辑和显示纯文本控件,QPlainTextEdit控件与QTextEdit控件使用了相同的技术和概念,但是它为纯文本处理提 ...

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

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

  3. 实战PyQt5: 050-选项卡控件QTabWidget

    QTabWidget简介 在GUI应用软件中,多页面的切换的使用范围十分广泛,在操作过程中,用户使用鼠标点击不同的标题栏就可以方便展示不同页面的内容,众多界面共用一块显示区域,在有限的就显示区域中可以 ...

  4. html tab选项卡 控件,Tab选项卡组件

    Tab选项卡组件 Tab组件是根据AppCan 布局框架对数据列表进行封装的JS对象,通过配合的样式,使开发者在界面中可以快速完成选项卡控件的开发. 依赖 appcan.js appcan.contr ...

  5. KRBTabControl(中文)Windows选项卡控件

    本文阐述了如何在C#使自定义Windows选项卡控件. Download demo project - 82.4 KB Download source - 252 KB 介绍 本文讨论如何使用.NET ...

  6. Plotly绘制金融时间序列图实战:配置滑动控件

    Plotly绘制金融时间序列图实战:配置滑动控件 # 可视化金融时间序列数据并设置时间粒度组件: import plotly as py import plotly.graph_objs as go ...

  7. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  8. Asp.Net Web控件 (八)(TabControl 选项卡控件)

    在项目开发中经常会用到选项卡控件,网上也有很多,其实只是简单的功能,很多却实现的很复杂,功能很强大,并不是我需要的. 下面来实现一个简单的TabControl . 先看演示: 位置:TabContor ...

  9. [原创]FineUI秘密花园(二十六) — 选项卡控件概述

    选项卡的使用非常广泛,比如官方示例的站点框架,TabStrip被用来同时打开多个页面,并方便地在页面之间进行快速切换.TabStrip还进行需要和JavaScript进行交互,比如动态的打开关闭选项卡 ...

最新文章

  1. 常用的shell脚本案例(14.04.15更新)
  2. redux-form的学习笔记二--实现表单的同步验证
  3. OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例
  4. 视频帧率对人眼主观感受的影响 2
  5. 信捷PLC XD/XL系列C语言功能块的应用
  6. 在html中图片不显示不出来,网页图片显示不出来
  7. [JZOJ3461] 小麦亩产一千八
  8. 600,000,002,200,300,400等开头的股票都是什么意思
  9. [Python] 贡献度分析
  10. EOJ 2527 Fj haozi【dfs】
  11. 关于数独--九宫格的算法实现
  12. iOS开发中键盘样式和自定义键盘。
  13. Windows如何安装mysql
  14. 给计算机图片文件夹加密码,文件夹怎么设置密码
  15. Win10笔记本触摸板在按键时或刚按完键后无法正常使用的问题
  16. SQL server 计算当前日期为一年中的第几周,以周五/周一作为一周中的第一天
  17. 前端面试 - JS总结(1) - 基础 (数据类型, 事件与函数, 原型链)
  18. 中国1-甲基环丙烯市场现状研究分析与发展前景预测报告(2022)
  19. Echarts全国地图区域合并------去掉海南子区域及南海诸岛
  20. 微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)

热门文章

  1. Python中operator模块的操作
  2. [Asp.net]SignalR实现实时日志监控
  3. .net 获取 存储过程的输出参数
  4. Android开发之旅:应用程序基础及组件
  5. 计算机主机漏电,电脑机箱漏电怎么办?机箱电源漏电原因及解决方法
  6. 在linux中完整路径中的目录间分隔符是,路径分隔符(斜杠/与反斜杠\的问题)
  7. mysql主从同步从库上Slave_IO_Running: Connecting问题
  8. 如何在mysql查找效率慢的SQL语句
  9. redis 内存不足 排查_一文深入了解 Redis 内存模型,Redis 的快是有原因的!
  10. 网站运维技术与实践之服务器监测常用命令