【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文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...
随机推荐
- 【转】燃烧吧,TestMice!
...当我们几个人碰面的时候,就感觉应该做点测试业内的实事. 记得当时的17站出了一些QTP辅件,给了我一些灵感.2008年做了一整年的QTP企业级实施,从方案到最后的收尾支持,得到最大的教训就是,当 ...
- 仿迅雷播放器教程 -- duilib界面(13)
经过了这么多篇文章的讲解,相信大家也对界面库有一定了解了,用一个新的界面库,肯定要对它进行全方位考察.鉴于公司目前所有的产品都是MFC做的,全部转换成duilib肯定不现实,并且公司的很多项目逻辑和界 ...
- 设计模式-结构型模式,python桥接模式
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉及到一个作为桥接 ...
- WCF ChannelFactory<T> WCF Channel and ChannelFactory Caching
https://stackoverflow.com/questions/3200197/creating-wcf-channelfactoryt?rq=1 https://stackoverflow. ...
- IntelliJ IDE破解
1.购买正版用户 2.激活码 一:下载以下jar,放到 bin 破解补丁无需使用注册码,下载地址 idea14 keygen下载地址 二:在下面两个文件中加入-javaagent:E:\IDEA\In ...
- Socket 服务端使用多线程实现多客户端通讯实例
socket通信原理 Java多线程实现Socket通讯 1.服务端 import java.io.IOException; import java.net.ServerSocket; import ...
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
环境介绍>>>>>>>>>>>>>>>>>> 操作系统:Centos 7.1 mysql数据 ...
- Android Training Caching Bitmaps 翻译
原文:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 图片缓存 在Android开发中,加载一个图 ...
- linux 常用 掌握要点 详细终结
linux 命令大全 每个开发者应该了解的 10 个 Linux 命令 1.查看正在执行的进程(Process) ps命令 Process Status 进程状态 语法: ps [option] ...
- 第39级台阶|2013年蓝桥杯B组题解析第三题-fishers
第39级台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶.先迈左脚, ...