同类型的窗口不想放太多?想做类似网页上面那种页签?!
好,Qt能满足你的一切需求,实现效果如下,文末会附上一些关键代码的解释,这个东西的使用较为简单,就没有书写思路这种东西了

下面给了一个QTabWidget实现的最最基本的框架

# -*- coding: utf-8 -*-
from PyQt5 import QtGui
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QTabWidget, QMenu, QAction, QVBoxLayout, QPushButton, QWidgetclass DockWindow(QWidget):def __init__(self, name, parent=None):super(DockWindow, self).__init__(parent)self.parent = parentself.setContentsMargins(0, 0, 0, 0)self.setWindowTitle(name)class MainWindow(QTabWidget):def __init__(self, parent=None):super(MainWindow, self).__init__(parent)self.setTabsClosable(True)self.tabCloseRequested.connect(self.onCloseTab)self.currentChanged.connect(self.onChangeTab)self.setMovable(True)self.currIndex = Nonewidget1 = self.addTabFast("第一个页签")widget2 = self.addTabFast("第二个页签")widget3 = self.addTabFast("第三个页签")widget4 = self.addTabFast("第四个页签")verLayout = QVBoxLayout()verLayout.addWidget(QPushButton("为了表现每个窗口不一样,我是1号"))widget1.setLayout(verLayout)verLayout = QVBoxLayout()verLayout.addWidget(QPushButton("我变了,我是2号"))widget2.setLayout(verLayout)verLayout = QVBoxLayout()verLayout.addWidget(QPushButton("我又变了,我是3号"))widget3.setLayout(verLayout)verLayout = QVBoxLayout()verLayout.addWidget(QPushButton("没想到吧,我是4号"))widget4.setLayout(verLayout)def addTabFast(self, name):widget = DockWindow(name)self.addTab(widget, name)return widgetdef onCloseTab(self, index):widget = self.widget(index)widget.close()self.removeTab(index)def onChangeTab(self, index):# -1表示当前无窗口if index != -1:widget = self.widget(index)self.currIndex = indexprint("当前切换到的是:", widget.windowTitle())def mouseReleaseEvent(self, event):super(MainWindow, self).mouseReleaseEvent(event)if event.button() == Qt.RightButton:menu = QMenu(self)action1 = QAction("另存为", self)action2 = QAction("保存", self)action3 = QAction("关闭", self)menu.addAction(action1)menu.addAction(action2)menu.addAction(action3)menu.exec_(QtGui.QCursor().pos())if __name__ == '__main__':import sysapp = QApplication(sys.argv)mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec_())

几个关键代码解析:
1、self.setTabsClosable(True)
gif中上方tab的关闭按钮看到了吗,他的作用就是这

2、self.setMovable(True)
gif中上方tab可以拖动,他的作用就是这

3、self.currentChanged.connect(self.onChangeTab)
QTabWidget中的关键信号,当页签切换的时候发出

4、self.tabCloseRequested.connect(self.onCloseTab)
QTabWidget中的关键信号,当页签关闭的时候发出,并且此时我们要在其中加入QTabWidget.removeTab(index),这样才能移除该tab

5、我们可以通过QTabWidget.widget(int num)来获取对应tab下的widget!

QTabWidget的使用相关推荐

  1. Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

    目录 1.QTabWidget容器控件类 2.QStackedWidget容器控件类 3.QDockWidget容器控件类 有时候我们可能会面临这样一种情况:所开发的程序包含了太多的控件,导致一个窗口 ...

  2. pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget

    QTabWidget 常用方法 方法 描述 addTab() 将一个控件添加到Tab控件的选项卡中 insertTab() 将一个Tab控件的选项卡插入到指定的位置 removeTab() 根据指定的 ...

  3. qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget

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

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

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

  5. qt中设置QTabWidget,QGroupBox,QScrollArea的样式

    引言 本文对标题中所述的三种控件的样式使用样式表来设置其外观.该样式表没有采用样式文件,而是在程序中直接使用函数setStyleSheet()来设置控件的样式. 前期准备 ui文件中各控件的结构如下图 ...

  6. QTabBar 和 QTabWidget部件 页签

    地址:http://blog.sina.com.cn/s/blog_a6fb6cc90101e8m6.html 设置界面(包括关于我们.登录界面等)其实很简单,只要运行自己安装的360,将设置界面打开 ...

  7. 最详细的QTabWidget的样式设置

    一. QTabWidget简介 QTabWidget提供一个"选项卡栏"和一个"页面区域",用于显示与每个选项卡相关的页面.默认情况下,选项卡栏显示在页面区域上 ...

  8. Qt扫盲-QTabWidget理论总结

    QTabWidget理论总结 1. 简述 2. 用法流程 3. 选项卡设置 3. 页面信息 3. 外观 4. 扩展 1. 简述 QTabWidget 提供一个选项卡栏和一个"页面区域&quo ...

  9. QTabWidget样式表

    1.QTabWidget模型,来自于网络: 2.样式设置: this->setStyleSheet("QTabWidget::pane{border-width:1px;border- ...

  10. QTabWidget自定义qss样式订制

    文章目录 前言 定制样式一: 定制样式二: 前言 想起之前很久做过一个客户端,页面效果类似于网页效果,最近抽空整理了下QTabWidget的网页效果qss样式, 就是做个记录,有看的上的可以直接拿去使 ...

最新文章

  1. 【Git】在本地创建git库管理自己的代码
  2. 如何使用ModelSim作前仿真與後仿真? (真oo无双前辈)
  3. Java学习笔记25
  4. python 错误与异常
  5. 《大话存储》读书笔记一
  6. jQuery使用总结 - Core jQuery Selectors 选择器一2/4
  7. python基础--面向对象之多态
  8. GDCM:gdcm::Printer的测试程序
  9. php日志导出oracle,一个php导出oracle库的php代码
  10. 预测今后的北京高考人数
  11. php无法创建cookie,php cookie无法正常工作
  12. java工程如何使用ivew_vue+iview搭建项目
  13. Android 博文
  14. 量子计算机 时间倒流,科学家首次利用量子计算机成功逆转时间,时间倒流将变成可能?...
  15. 数字图像相关-高斯分布散斑图生成MATLAB代码
  16. opnet安装的问题
  17. 使用xlang开发隐形水印制作工具
  18. mba和研究生的区别
  19. SpringBoot实现文件上传和下载
  20. 云小课|使用SQL加密函数实现数据列的加解密

热门文章

  1. 屏幕测试软件当贝,2018三款智能电视屏幕检测软件,当贝市场良心推荐
  2. 【HPE】3D HPE调研
  3. sourcetree怎么搜索_sourceTree的使用
  4. firefox 47 使用 greasemonkey (油猴子) 写 helloworld
  5. CRM系统的两个核心
  6. Linux系统中的火墙策略——firewalld、iptables
  7. HP Proliant DL388 Gen9 服务器 BIOS 设置丢失,win2008 r2启动引导文件修复
  8. 旁路电容和去耦电容区别
  9. unity3d VR手柄射线拾取,投掷,发射可拿去的物体
  10. 1994年图灵奖--爱德华·费根鲍姆和劳伊·雷迪简介