QToolBox
QToolBox类提供了一列选项卡的小部件(选项卡内含项目)。
工具箱是一个小部件,它将选项卡一个一个的显示,当前项目显示在当前选项卡下方。每个选项卡在选项卡列中都有一个索引位置。一个选项卡的项目是一个QWidget。
每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。项目的属性可以通过setItemText(),setItemIcon()和setItemToolTip()来改变。每个项目都可以使用setItemEnabled()单独启用或禁用。
项目使用addItem()添加,或使用insertItem()插入特定位置。项目总数由count()给出。可以删除项目,或使用removeItem()从工具箱中删除项目。通过组合removeItem()和insertItem(),您可以将项目移动到不同的位置。
当前项目小部件的索引由currentIndex()返回,并用setCurrentIndex()设置。可以使用indexOf()来找到特定项目的索引,并且item()返回给定索引处的项目。
currentChanged()信号在当前项目改变时发出。
栗子
from PyQt5.QtWidgets import QToolBox, QApplication, QToolButton, QGroupBox, QVBoxLayout
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon
import sys, webbrowser
class Example(QToolBox):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(280,500)
self.setWindowTitle('微信公众号:学点编程吧--QToolBox')
self.setWindowFlags(Qt.Dialog)
favorites =[
[
{'des':'百度搜索', 'pic':'image/se/baidu.ico'},
{'des':'搜狗搜索', 'pic':'image/se/sougo.ico'},
{'des':'必应搜索', 'pic':'image/se/bing.ico'},
{'des':'360搜索', 'pic':'image/se/360.ico'},
{'des':'谷歌搜索', 'pic':'image/se/google.ico'},
{'des':'雅虎搜索', 'pic':'image/se/yahoo.ico'}
],
[
{'des':'腾讯视频', 'pic':'image/v/tengxun.ico'},
{'des':'搜狐视频', 'pic':'image/v/sohuvideo.ico'},
{'des':'优酷视频', 'pic':'image/v/youku.ico'},
{'des':'土豆视频', 'pic':'image/v/tudou.ico'},
{'des':'AcFun弹幕', 'pic':'image/v/acfun.ico'},
{'des':'哔哩哔哩', 'pic':'image/v/bilibili.ico'}
]
]
for item in favorites:
groupbox = QGroupBox()
vlayout = QVBoxLayout(groupbox)
vlayout.setAlignment(Qt.AlignCenter)
for category in item:
toolButton = QToolButton()
toolButton.setText(category['des'])
toolButton.setIcon(QIcon(category['pic']))
toolButton.setIconSize(QSize(64, 64))
toolButton.setAutoRaise(True)
toolButton.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
vlayout.addWidget(toolButton)
name = category['des']
toolButton.clicked.connect(self.run)
if name == '雅虎搜索':
self.addItem(groupbox,'搜索引擎')
else:
self.addItem(groupbox,'视频网站')
self.show()
def run(self):
if self.sender().text() == '百度搜索':
webbrowser.open('https://www.baidu.com')
elif self.sender().text() == '搜狗搜索':
webbrowser.open('https://www.sogou.com/')
elif self.sender().text() == '必应搜索':
webbrowser.open('http://cn.bing.com/')
elif self.sender().text() == '360搜索':
webbrowser.open('https://www.so.com/')
elif self.sender().text() == '谷歌搜索':
webbrowser.open('https://www.google.com/')
elif self.sender().text() == '雅虎搜索':
webbrowser.open('https://www.yahoo.com/')
elif self.sender().text() == '腾讯视频':
webbrowser.open('https://v.qq.com/')
elif self.sender().text() == '搜狐视频':
webbrowser.open('https://film.sohu.com')
elif self.sender().text() == '优酷视频':
webbrowser.open('http://www.youku.com/')
elif self.sender().text() == '土豆视频':
webbrowser.open('http://www.tudou.com/')
elif self.sender().text() == 'AcFun弹幕':
webbrowser.open('http://www.acfun.cn/')
elif self.sender().text() == '哔哩哔哩':
webbrowser.open('https://www.bilibili.com/')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
具体运行结果参考:
https://zhuanlan.zhihu.com/p/33498667
谢谢 “学点编程吧”