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)用法讲解的更多相关文章

  1. PyQt5 & Qt Designer使用小结

    开始在知乎写文章的原因,主要还是想整理平时的经验,方便自己以后查看,有机会的话大家也可以交流吧. 11月中旬由于项目需要,和另一名实习生负责使用Python开发一个数据分析的小软件. 虽然才开始接触Q ...

  2. PyCharm+PyQt5+Qt Designer配置

    配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...

  3. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  4. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  5. pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面

    当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer. 我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...

  6. python的部分GUI模块简介tkinter、pyqt5(Qt Designer)

    笔者认为,这两个作为Python3较为常用且简单的GUI模块,是Python开发者所必须学习至少是了解的. 其中tkinter为Python3自带的GUI模块,而pyqt5则需要通过pip insta ...

  7. PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程

    摘要:Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合.这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的 ...

  8. PyQT5速成教程-4 Qt Designer实战[上]

    本文由 沈庆阳 所有,转载请与作者取得联系! 前言 在前面几节的学习中,我们对PyQt的基本使用.Qt Designer与Python编码的工作流程有了基本的学习.同时也掌握了Qt Designer中 ...

  9. PyQt5(1)——Qt Designer初探

    相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...

随机推荐

  1. UML类建模(强烈推荐-思路很清晰)

    UML类建模(强烈推荐-思路很清晰) 2016年10月23日 15:17:47 mbshqqb 阅读数:2315 标签: uml面向对象设计模式 更多 个人分类: 面向对象程序设计   UML的构造快 ...

  2. Win7/Win10多用户同时使用远程桌面

    Win7/Win10正常情况下是不允许多用户同时远程的,即一个用户远程进来会把另一个用户踢掉,需要破解. Win7:安装UniversalTermsrvPatch-x64.exe,见https://p ...

  3. .net core 开发接口前端调用时提示错误 405

    解决方法: 在StartUp.cs文件中Configure(IApplicationBuilder app, IHostingEnvironment env)方法中添加如下代码: //跨域 app.U ...

  4. SpringBoot------MockMvc单元测试

    1.添加测试依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...

  5. python 字符串编码解码和格式化问题

    转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868191962 ...

  6. MySQL 去除字段中的换行和回车符

    今天csv 导入关键词的时候遇到问题 字段结束会有 回车符号 解决方法: ), ),'');          char(10):  换行符          char(13):  回车符

  7. SQLServer最耗资源时间的SQL语句

    作者kolachen http://blog.sina.com.cn/s/blog_63f3e0060102vcm0.html 先拷过来了,等有空再研究一下 执行最慢的SQL语句 SELECT (to ...

  8. VS Code非英语版本连接TFS错误解决方案

    使用VS Code连接TFS时,提示以下错误: (team) It appears you have configured a non-English version of the TF execut ...

  9. elasticsearch.yml配置文件

        Elasticsearch的配置文件在config文件夹下,其中有elasticsearch.yml.logging.yml两个配置文件,其中elasticsearch.yml是用来配置Ela ...

  10. 关于启动VS2012时,提示Web4.0尚未在网络服务器上注册的解决办法!

    VS2012在没有Web服务器上注册的问题,网上有很多博客. 开始我就是遇到这个问题,在网上试了几个办法,确实都还可以.但是相比之下有的需要设置DOS,进行安装.exe. 这种方法其实相比直接安装补丁 ...