【PyQt5-Qt Designer】工具箱(QToolBox)用法講解

QToolBox() 實現抽屜效果

 

整體介紹:

QToolBox類提供了一列選項卡的小部件(選項卡內含項目)。html

 

工具箱是一個小部件,它將選項卡一個一個的顯示,當前項目顯示在當前選項卡下方。每一個選項卡在選項卡列中都有一個索引位置。一個選項卡的項目是一個QWidget。web

 

每一個項目都有一個itemText(),一個可選的itemIcon(),一個可選的itemToolTip()和一個widget()。項目的屬性能夠經過setItemText(),setItemIcon()和setItemToolTip()來改變。每一個項目均可以使用setItemEnabled()單獨啓用或禁用。app

 

項目使用addItem()添加,或使用insertItem()插入特定位置。項目總數由count()給出。能夠刪除項目,或使用removeItem()從工具箱中刪除項目。經過組合removeItem()和insertItem(),您能夠將項目移動到不一樣的位置。ide

 

當前項目小部件的索引由currentIndex()返回,並用setCurrentIndex()設置。能夠使用indexOf()來找到特定項目的索引,而且item()返回給定索引處的項目。工具

 

currentChanged()信號在當前項目改變時發出。網站

 

更多詳細的介紹,請見官網:QToolBox Class | Qt Widgets 5.10ui

 

類的歸屬:

 

PyQt5->QtWidgets->QToolBox搜索引擎

 

繼承:QFramegoogle

 

 抽屜窗口:url

效果以下:

參考:
https://zhuanlan.zhihu.com/p/33498667

https://blog.csdn.net/la_vie_est_belle/article/details/82695938

完整代碼:

 1 import sys,webbrowser  2 from PyQt5.QtGui import QIcon,QFont,QDesktopServices  3 from PyQt5.QtCore import Qt,QSize,QUrl  4 from PyQt5.QtWidgets import QApplication, QToolBox, QGroupBox, QToolButton, QVBoxLayout  5 
 6 
 7 class Demo(QToolBox):  # 1
 8     def __init__(self):  9         super(Demo, self).__init__() 10  self.initUI() 11 
12     def initUI(self): 13         self.setGeometry(300,300,400,320) 14         self.setWindowTitle("QToolBox抽屜窗口") 15  self.layout_init() 16 
17     def layout_init(self): 18         self.groupBox1 = QGroupBox("搜索", self) 19         self.groupBox2 = QGroupBox("視頻", self) 20         self.groupBox3 = QGroupBox("購物", self) 21 
22         self.vboxLayout1 = QVBoxLayout() 23         self.vboxLayout2 = QVBoxLayout() 24         self.vboxLayout3 = QVBoxLayout() 25         self.toolButton_Icons = ["百度.png","谷歌.png","搜狐.png", "土豆.png","優酷.png","bilibili.png","淘寶.png","京東.png","亞馬遜.png","惟品會.png","返利.png"] 26         self.toolButton_Names = ["百度搜索","谷歌搜索","搜狐視頻","土豆視頻","優酷視頻","bilibili番劇","淘寶","京東","亞馬遜","惟品會","返利"] 27         self.toolButtons = [] 28         for i in range(len(self.toolButton_Icons)): 29             toolButton = QToolButton(self) 30  toolButton.setIcon(QIcon(self.toolButton_Icons[i])) 31             toolButton.setIconSize(QSize(80,80)) 32  toolButton.setText(self.toolButton_Names[i]) 33             toolButton.setFont(QFont("微軟雅黑",16,QFont.Bold)) 34  toolButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 35  toolButton.setAutoRaise(True) 36  toolButton.clicked.connect(self.btnClicked) 37  self.toolButtons.append(toolButton) 38             if i<2: 39  self.vboxLayout1.addWidget(toolButton) 40  self.vboxLayout1.setAlignment(Qt.AlignCenter) 41             elif i<6: 42  self.vboxLayout2.addWidget(toolButton) 43  self.vboxLayout2.setAlignment(Qt.AlignCenter) 44             else: 45  self.vboxLayout3.addWidget(toolButton) 46  self.vboxLayout3.setAlignment(Qt.AlignCenter) 47 
48         # self.groupBox1.setFlat(True) #將groupBox 設置爲flat
49         # self.groupBox2.setFlat(True)
50         # self.groupBox3.setFlat(True)
51  self.groupBox1.setLayout(self.vboxLayout1) 52  self.groupBox2.setLayout(self.vboxLayout2) 53  self.groupBox3.setLayout(self.vboxLayout3) 54 
55         self.addItem(self.groupBox1,"搜索引擎!") 56         self.addItem(self.groupBox2,"視頻網站!") 57         self.addItem(self.groupBox3,"購物網站!") 58 
59  self.currentChanged.connect(self.print_index_func) 60 
61 
62     def print_index_func(self): 63         toolboxs = { 64             0:"搜索引擎!", 65             1:"視頻網站!", 66             2:"購物網站!"
67  } 68         sentence = "你選擇的欄目是:{}".format(toolboxs.get(self.currentIndex())) 69         print(sentence) 70 
71     def btnClicked(self): 72         urls_info = {"百度搜索": "https://www.baidu.com/", "谷歌搜索":"https://www.google.com.hk/", 73                     "搜狐視頻":"https://tv.sohu.com/", "土豆視頻":"http://www.tudou.com/", "優酷視頻":"http://www.youku.com/", "bilibili番劇":"https://www.bilibili.com/", 74                     "淘寶":"https://www.taobao.com/", "京東": "https://www.jd.com/", "亞馬遜":"https://www.amazon.cn/","惟品會":"https://www.vip.com/","返利":"https://www.fanli.com/"
75  } 76         items = [item for item in urls_info.items()] 77         for i in range(len(items)): 78             if self.sender().text() == items[i][0]: 79                 QDesktopServices.openUrl(QUrl(items[i][1])) 80                 # webbrowser.open(items[i][1])) #導入webbrowser模塊,與上述調用QDesktopServices,QUrl 效果同樣打開網頁
81 
82 
83 if __name__ == '__main__': 84     app = QApplication(sys.argv) 85     demo = Demo() 86  demo.show() 87     sys.exit(app.exec_())
QToolBox()+QToolButton()
相關文章
相關標籤/搜索