开发者社区> 游客nilbojqjhu5fm> 正文

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

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

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

image

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


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


image


利用 Qt designer创建UI文件


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


image

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

image


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


image


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

image


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

image

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


image

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

image

上一步生成的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启动脚本,之前创建好的界面就能够展现出来,但目前没有加入任何功能,整个界面的按钮点击后不会有任何反应。

image


界面添加功能,分为两个部分:
  • 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 (标签)关闭,打开功能基本已经完成,可以看一下效果

image




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
18784 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27955 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
13055 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22042 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15478 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的,?mysql的 3306,?mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建. ? have?fun! ?将编程看作是一门艺术,而不单单是个技术。
20097 0
78
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载
http://www.vxiaotou.com