QTabWidget 中 關於Tab 關閉和添加的基本教程!


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_3和tab_4兩個按鈕,用來控制后面標簽 界面 tab3 和 tab4 的打開;增加按鈕功能比較簡單,從左邊導航欄中可以直接添加,可以通過右邊的屬性編輯器中對按鈕中的 文本大小、文本字體進行修改。

 

上里的標簽(Tab)數量太少 ,新添加兩個標簽 tab3、tab4 來對應上面已經建立好的兩個按鈕 tab_3 和 tab_4的啟動;添加方法如下面,添加完畢時不要忘記修改一下標簽的名字。

 

當整個UI界面創建好之后,需要把界面保存下來,保存方法 : File -> Save As…->你的目錄

 

保存完畢之后,利用 pyqt 中的 pygui 工具把 以 ui結尾的文件 轉化為 py文件,這里,Pygui文件已經在Pycharm配置好了,直接在 Pycharm 點一下就可以直接使用,具體使用方法參考這篇文章:Qt Designer 在 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 (標簽)關閉,打開功能基本已經完成,可以看一下效果


————————————————
原文鏈接:https://blog.csdn.net/weixin_42512684/java/article/details/104099432


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM