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. 解决SQLite异常:library routine called out of sequence

    在项目开发中,使用SQLite一不小心就会碰到各种DB异常,网上搜了下没有这方面的资料,写出来记录下. 异常信息:android.database.sqlite.SQLiteMisuseExcepti ...

  2. Go Revel - Logging(日志)

    revel提供了4种日志记录器: 1.`TRACE` - 调试信息 2.`INFO` - 信息 3.`WARN` - 一些无害的异常信息 4.`ERROR` - 必须要关注的错误 日志记录器可以在`a ...

  3. 大杂烩 -- ArrayList的动态增长 源码分析

    基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 问题:当ArrayList中放入的元素一直增加会如 ...

  4. 升级 Centos 6.5/6.7 的 php 版本

    Centos 6.5/6.7 的 php 预设是用 5.3.3 这个版本号 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-releas ...

  5. react学习笔记(二)编写第一个react组件

    继续上一节课的内容,打开App.js:会看到如下代码: import React, { Component } from 'react';  //在此文件中引用React,以及reat的组件类 imp ...

  6. HttpWatch的Result中出现Aborted的原因分析

    我们在使用HttpWatch进行Web调试的过程中有时候会看到非HTTP Status Code(状态码)的值,例如:(Aborted). (Aborted)是HttpWatch中定义的三种非HTTP ...

  7. 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)

    第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 支持向量机分类 支持向量机 网格搜索 临近法 决策树 随机森林 bagging方法 import pandas as pd ...

  8. day_6.23py线程

    进程之间不能共享全局变量 线程之间共享全局变量,线程函数中的局部变量不是共享的!! #--*utf- 8*-- from threading import Thread import time g_n ...

  9. B - Hamburgers

    Polycarpus loves hamburgers very much. He especially adores the hamburgers he makes with his own han ...

  10. I - Crossing River

    A group of N people wishes to go across a river with only one boat, which can at most carry two pers ...