【PyQt5-Qt Designer】工具箱(QToolBox)用法讲解
QToolBox() 实现抽屉效果
总体介绍:
QToolBox类提供了一列选项卡的小部件(选项卡内含项目)。
工具箱是一个小部件,它将选项卡一个一个的显示,当前项目显示在当前选项卡下方。每个选项卡在选项卡列中都有一个索引位置。一个选项卡的项目是一个QWidget。
每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。项目的属性可以通过setItemText(),setItemIcon()和setItemToolTip()来改变。每个项目都可以使用setItemEnabled()单独启用或禁用。
项目使用addItem()添加,或使用insertItem()插入特定位置。项目总数由count()给出。可以删除项目,或使用removeItem()从工具箱中删除项目。通过组合removeItem()和insertItem(),您可以将项目移动到不同的位置。
当前项目小部件的索引由currentIndex()返回,并用setCurrentIndex()设置。可以使用indexOf()来找到特定项目的索引,并且item()返回给定索引处的项目。
currentChanged()信号在当前项目改变时发出。
更多详细的介绍,请见官网:QToolBox Class | Qt Widgets 5.10
类的归属:
PyQt5->QtWidgets->QToolBox
继承:QFrame

抽屉窗口:

效果如下:
参考:
https://zhuanlan.zhihu.com/p/33498667
https://blog.csdn.net/la_vie_est_belle/article/details/82695938
完整代码:
import sys,webbrowser
from PyQt5.QtGui import QIcon,QFont,QDesktopServices
from PyQt5.QtCore import Qt,QSize,QUrl
from PyQt5.QtWidgets import QApplication, QToolBox, QGroupBox, QToolButton, QVBoxLayout class Demo(QToolBox): #
def __init__(self):
super(Demo, self).__init__()
self.initUI() def initUI(self):
self.setGeometry(300,300,400,320)
self.setWindowTitle("QToolBox抽屉窗口")
self.layout_init() def layout_init(self):
self.groupBox1 = QGroupBox("搜索", self)
self.groupBox2 = QGroupBox("视频", self)
self.groupBox3 = QGroupBox("购物", self) self.vboxLayout1 = QVBoxLayout()
self.vboxLayout2 = QVBoxLayout()
self.vboxLayout3 = QVBoxLayout()
self.toolButton_Icons = ["百度.png","谷歌.png","搜狐.png", "土豆.png","优酷.png","bilibili.png","淘宝.png","京东.png","亚马逊.png","唯品会.png","返利.png"]
self.toolButton_Names = ["百度搜索","谷歌搜索","搜狐视频","土豆视频","优酷视频","bilibili番剧","淘宝","京东","亚马逊","唯品会","返利"]
self.toolButtons = []
for i in range(len(self.toolButton_Icons)):
toolButton = QToolButton(self)
toolButton.setIcon(QIcon(self.toolButton_Icons[i]))
toolButton.setIconSize(QSize(80,80))
toolButton.setText(self.toolButton_Names[i])
toolButton.setFont(QFont("微软雅黑",16,QFont.Bold))
toolButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
toolButton.setAutoRaise(True)
toolButton.clicked.connect(self.btnClicked)
self.toolButtons.append(toolButton)
if i<2:
self.vboxLayout1.addWidget(toolButton)
self.vboxLayout1.setAlignment(Qt.AlignCenter)
elif i<6:
self.vboxLayout2.addWidget(toolButton)
self.vboxLayout2.setAlignment(Qt.AlignCenter)
else:
self.vboxLayout3.addWidget(toolButton)
self.vboxLayout3.setAlignment(Qt.AlignCenter) # self.groupBox1.setFlat(True) #将groupBox 设置为flat
# self.groupBox2.setFlat(True)
# self.groupBox3.setFlat(True)
self.groupBox1.setLayout(self.vboxLayout1)
self.groupBox2.setLayout(self.vboxLayout2)
self.groupBox3.setLayout(self.vboxLayout3) self.addItem(self.groupBox1,"搜索引擎!")
self.addItem(self.groupBox2,"视频网站!")
self.addItem(self.groupBox3,"购物网站!") self.currentChanged.connect(self.print_index_func) def print_index_func(self):
toolboxs = {
0:"搜索引擎!",
1:"视频网站!",
2:"购物网站!"
}
sentence = "你选择的栏目是:{}".format(toolboxs.get(self.currentIndex()))
print(sentence) def btnClicked(self):
urls_info = {"百度搜索": "https://www.baidu.com/", "谷歌搜索":"https://www.google.com.hk/",
"搜狐视频":"https://tv.sohu.com/", "土豆视频":"http://www.tudou.com/", "优酷视频":"http://www.youku.com/", "bilibili番剧":"https://www.bilibili.com/",
"淘宝":"https://www.taobao.com/", "京东": "https://www.jd.com/", "亚马逊":"https://www.amazon.cn/","唯品会":"https://www.vip.com/","返利":"https://www.fanli.com/"
}
items = [item for item in urls_info.items()]
for i in range(len(items)):
if self.sender().text() == items[i][0]:
QDesktopServices.openUrl(QUrl(items[i][1]))
# webbrowser.open(items[i][1])) #导入webbrowser模块,与上述调用QDesktopServices,QUrl 效果一样打开网页 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
QToolBox()+QToolButton()
【PyQt5-Qt Designer】工具箱(QToolBox)用法讲解的更多相关文章
- PyQt5 & Qt Designer使用小结
开始在知乎写文章的原因,主要还是想整理平时的经验,方便自己以后查看,有机会的话大家也可以交流吧. 11月中旬由于项目需要,和另一名实习生负责使用Python开发一个数据分析的小软件. 虽然才开始接触Q ...
- PyCharm+PyQt5+Qt Designer配置
配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...
- 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...
- PyCharm+Qt Designer+PyUIC安装配置教程
Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...
- pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面
当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer. 我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...
- python的部分GUI模块简介tkinter、pyqt5(Qt Designer)
笔者认为,这两个作为Python3较为常用且简单的GUI模块,是Python开发者所必须学习至少是了解的. 其中tkinter为Python3自带的GUI模块,而pyqt5则需要通过pip insta ...
- PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程
摘要:Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合.这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的 ...
- PyQT5速成教程-4 Qt Designer实战[上]
本文由 沈庆阳 所有,转载请与作者取得联系! 前言 在前面几节的学习中,我们对PyQt的基本使用.Qt Designer与Python编码的工作流程有了基本的学习.同时也掌握了Qt Designer中 ...
- PyQt5(1)——Qt Designer初探
相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件 可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...
随机推荐
- MapReduce教程(二)MapReduce框架Partitioner分区<转>
1 Partitioner分区 1.1 Partitioner分区描述 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,按照手机号码段划分的话,需要把同一手机号码段的数据放 ...
- 如何在Excel中提取小数点后面的数字?
Excel中,如果某个单元格中包含一个带小数,要用公式提取该数值小数点后面的数字,例如A1单元格中包含一个数值“59178.68”,在B1单元格中输入下面的公式: =RIGHT(A1,LEN(A1)- ...
- java之Pattern类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Pattern 声明: ...
- Pwnium CTF2014 – MatterOfCombination writeup
这道题是虽然只有75分,但是做出来的队伍却很少,我们队伍也没有做出来,这次是看到了0xAWES0ME 的解题思路后才有了这篇文章.原文地址可以点击看这里,英文的. 题目就是一张图片: 在网上可以找到这 ...
- c++中局部变量初始化的问题
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里: int x =0; 跟 int x; 的效果看起来是一样的.但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的 ...
- python3二元Logistics Regression 回归分析(LogisticRegression)
纲要 boss说增加项目平台分析方法: T检验(独立样本T检验).线性回归.二元Logistics回归.因子分析.可靠性分析 根本不懂,一脸懵逼状态,分析部确实有人才,反正我是一脸懵 首先解释什么是二 ...
- Mac获取公网ip
终端输入 curl http://members.3322.org/dyndns/getip way 2: ➜ ~ wget http://ipecho.net/plain -O - -q ; ech ...
- 使用WPF Animated GIF实现GIF图片的播放
这个类库很方便,也很简单:http://wpfanimatedgif.codeplex.com/ 参考博客:http://blog.csdn.net/gqqnb/article/details/721 ...
- python单引号(')、双引号(")、三引号(''',""")
python对字符串的表示方法比c更有灵活性,但是也更难理解. 为了在平时使用.看代码过程中对着单引号(').双引号(").三引号(''',""")不混淆,知道 ...
- C# windows程序应用与JavaScript 程序交互实现例子
C# windows程序应用与JavaScript 程序交互实现例子 最近项目中又遇到WinForm窗体内嵌入浏览器(webBrowser)的情况,而且涉及到C#与JavaScript的相互交互问题, ...
