【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()
相关文章
相关标签/搜索