QTabWidget 中 关于Tab 关闭和添加的基本教程!

简介: QTabWidget是PyQt5 中使用较为广泛的容器之一,经常会在日常使用的软件中用到它;QTabwidget是由几个标签组成,每个标签可以当作一个界面,下面就是应用Qtabwidget的一个简单例子:

QTabWidget是PyQt5 中使用较为广泛的容器之一,经常会在日常使用的软件中用到它;QTabwidget是由几个标签组成,每个标签可以当作一个界面,下面就是应用Qtabwidget的一个简单例子:

上面 Tab1,Tab2是两个标签,当点 Tab1 时,就进入一个 Tab1 的界面,界面上面由3个文本标签:tab1_lable1,tab2_label2和tab3_label3 ;Tab2 同样是另一个界面的按钮入口。


QTabwidget中的标签(Tab)也可以通过按钮自行打开和关闭;要实现这种功能,需要两个步骤:1,给每个标签(Tab)加上关闭按钮,通过 **tabWidget.setTabsClosable(True) **机制实现,2,给标签(Tab)添加打开功能(打开是针对于每一个Tab)和关闭功能(关闭是统一针对于所有Tab实现的),打开和关闭功能借助的是 Qt 中的信号槽。展示效果如下(这里展示的只是关闭功能):



利用 Qt designer创建UI文件


Qtabwidget的界面可以用代码实现,也可以用Qt designer制作;这里以Qt designer为例,首先打开Qt designer ,在主窗口创建一个 Widget,然后找到左边的导航栏,找到Containers(容器)中的Tab wdiget控件,选中这个控件之后,拖到主窗口Widget当中;


调整 TabWidget 的布局方式,把 TabWidget中的在 TabWidget 的边缘处,鼠标右击选择 **Lay out -> Lay Out in a Grid ** 方式,这样控件就可以随着窗口的大小而自适应调整。


Tab widget 中的 Tab(标签) 中关闭按钮的添加方式:用鼠标选中 TabWidget ,在右边导航栏中找到 Property Editor -> QTabWidget -> tabsClosable,在tabsClosable 后面的对话框上打上勾,之后Tab(标签)的右上角就会出现 关闭按钮 ×图标 :



还需要再 Tab1 窗口内加入两个 按钮tab_3tab_4两个按钮,用来控制后面标签 界面 tab3tab4 的打开;增加按钮功能比较简单,从左边导航栏中可以直接添加,可以通过右边的属性编辑器中对按钮中的 文本大小、文本字体进行修改。


上里的标签(Tab)数量太少 ,新添加两个标签 tab3、tab4 来对应上面已经建立好的两个按钮 tab_3 和 tab_4的启动;添加方法如下面,添加完毕时不要忘记修改一下标签的名字。

当整个UI界面创建好之后,需要把界面保存下来,保存方法 : File -> Save As…->你的目录


保存完毕之后,利用 pyqt 中的 pygui 工具把 以 ui结尾的文件 转化为 py文件,这里,Pygui文件已经在Pycharm配置好了,直接在 Pycharm 点一下就可以直接使用

上一步生成的py文件不可以直接使用,使用时需要在文件的最后加入几行代码来 创建生成入口:


if  __name__ =='__main__':
    import sys
    from PyQt5.QtWidgets import  QApplication,QWidget
    app = QApplication(sys.argv)
    ui_mai = Ui_Form()
    mai_dow = QWidget()
    ui_mai.setupUi(mai_dow)
    mai_dow.show()
    app.exec_()


Pycharm启动脚本,之前创建好的界面就能够展现出来,但目前没有加入任何功能,整个界面的按钮点击后不会有任何反应。


界面添加功能,分为两个部分:
  • 1,TabWidget中的 标签(Tab)添加关闭功能;
  • 2,按钮tab_3、tab_4 添加信号槽,链接功能就是 Tab 3 、Tab 4标签的打开;

对于第一个功能,Qt中Tabwidget可以利用 tabCloseRequested 来实现:先创建一个关闭标签(利用 remove(tab))函数,然后将 tabwidget 借助 tabCloseRequested 来实现

#相关代码
#tabWidget加入信号槽,把所有Tab链接;
self.tabWidget.tabCloseRequested.connect(self.close_tab)
#tab(标签)关闭函数;
def close_tab(self,index):
      self.tabWidget.removeTab(index)

对于第二个功能,按钮添加信息槽:先创建两个函数来实现 tabwidget 添加 tab功能(利用的是Tabwidget 的 addTab功能), 然后把两个 pushbutton 与这两个函数相链接(利用信息槽),代码如下:

#链接信号槽
self.pushButton.clicked.connect(self.add_tab_3)
self.pushButton_2.clicked.connect(self.add_tab_4)
#两个添加 Tab 的函数
def add_tab_3(self):
    '''加入Tab 3'''
    tab_3 = QtWidgets.QWidget()
    tab_3.setObjectName("tab_3")
    self.tabWidget.addTab(tab_3,'Tab 3')
def add_tab_4(self):
    '''加入Tab 4'''
    tab_4 = QtWidgets.QWidget()
    tab_4.setObjectName('tab_4')
    self.tabWidget.addTab(tab_4,'Tab 4')

到这里 QTabWidget 中 tab (标签)关闭,打开功能基本已经完成,可以看一下效果




相关文章
|
7月前
自定义Tab选项卡
自定义Tab选项卡
34 2
|
Windows
PADS在WIN10系统中菜单显示不全的解决方法
决定由AD转PADS,打开发现菜单显示不正常,如下图所示:
774 0
解决 VScode 在打开新Tab是覆盖上一个Tab的问题(亲测可用)
解决 VScode 在打开新Tab是覆盖上一个Tab的问题(亲测可用)
|
C++
VS Code 快速清空控制台 快捷键设置
快速学习VS Code 快速清空控制台 快捷键设置
262 1
VS Code 快速清空控制台 快捷键设置
|
JavaScript 前端开发
easyui 后台页面,在Tab中的链接点击后添加一个新TAB的解决方法
1.示例1 新增一个按钮 添加点击事件 onclick="self.parent.addTab('百度','http://www.baidu.com','icon-add')" 如: 打开新TAB 这样点击链接后会增加一个新的TAB     2.
1472 0
JavaScrip - tab栏切换案例
JavaScrip - tab栏切换案例
115 0
sublime text 关闭其他窗口(close other tabs)快捷键
sublime text 关闭其他窗口(close other tabs)快捷键
sublime text 关闭其他窗口(close other tabs)快捷键
|
前端开发 索引
前端实现tab栏切换,这么常见的案例你学会了吗?
tab栏切换制作是我们web开发中一个十分常见的案例,今天在这里写写,希望对大家有所帮助,还是要用到我们上节写到的排他思想!好好学哦!
989 0
前端实现tab栏切换,这么常见的案例你学会了吗?
|
容器 开发者
Ext6使用tabPanel关闭tab再打开报错的解决
使用chrom浏览器的开发者工具的console追溯报错信息如下: Uncaught Error:Cannot add destroyed item 'panel-1043' to Container 'centertab-1021'
1517 0