• 老猿Python博文目录
  • 专栏:使用PyQt开发图形界面Python应用
  • 老猿Python博客地址

一、引言

toolBox工具箱是一个容器部件,对应类为QToolBox,在其内有一列从上到下顺序排列的标签部件项(tabbed widget item),具体请见《PyQt(Python+Qt)学习随笔:工具箱(QToolBox)的用途及标签部件项(tabbed widget item)作用介绍》和《PyQt(Python+Qt)学习随笔:工具箱(QToolBox)编程使用的步骤及示例代码》的介绍。

本文将介绍老猿使用QToolBox实现的一个测试用Demo,实现一个桌面工具箱,在桌面工具箱中提供了通讯录、日历、时钟、记事本、图片显示五个工具。

二、UI设计

下图为该工具箱的UI设计:

包含了上面所介绍的五个标签,在《PyQt(Python+Qt)学习随笔:工具箱(QToolBox)编程使用的步骤及示例代码》中介绍说在UI界面就设计标签部件项,“其实执行后更麻烦,唯一的好处是能预览界面的情况,且标签的文本、图标和tooltip直接获取原来标签的即可无需在代码中指定”,但本Demo还是基于在UI中设计好标签部件项便于演示,但后续代码实现稍微复杂。

另外还有一个通讯录展示的窗口:

三、使用PyUIC生成UI对应代码文件

生成ui_toolBoxTest.py为应用主界面、ui_showPersons.py为通讯录展示窗口。

四、派生通讯录管理类personListWin

class personListWin(QtWidgets.QWidget,ui_showPersons.Ui_personListWin):def __init__(self,memberList=None):super().__init__()self.setupUi(self)if memberList:self.addMembers(memberList)def addMembers(self,memberList):self.itemList.addItems(memberList)

之所以派生该类是为了实例创建时可以直接添加成员。

五、定义数字时钟类DigitalClock

数字时钟从QtWidgets.QLCDNumber派生,实时显示时间:

class DigitalClock(QtWidgets.QLCDNumber):def __init__(self):super().__init__()self.setDigitCount(8) #显示8个字符self.timer =   QtCore.QTimer(self)self.timer.timeout.connect( self.showTime) #连接每秒触发一次的计时信号和showTime方法self.timer.start(1000)self.showTime()  #显示当前时间def showTime(self):#在lcd界面上显示时间......        

六、从UI界面类派生主界面类

派生类中做了如下几件事情:
1、为每个标签部件项构建对应功能部件widget;
2、将原来UI设计的标签部件项的text、icon、tooltip取出来后删除原项;
3、根据text、icon、tooltip、widget创建新项。

class mainWindow(QtWidgets.QWidget,ui_toolBoxTest.Ui_mainWin):def __init__(self):super().__init__()self.setupUi(self)self.initToolItemList() #初始化五个标签部件项def setItem(self,index,widget):......self.toolBox.insertItem(index, widget, icon, itemText)def initToolItemList(self):#从最后一个项开始绑定对应widget对象count = self.toolBox.count()current = self.toolBox.currentIndex() #保存当前选择项for loop in range(count):index = count-loop-1if index == 0:item = personListWin(['陈佳妮', '许姮', '王二妮', '冯华','吕程', '李诞', '郑菱', '孙蒿', '杨枼', '朱酷安','吴勇', '李晖', '铎铎', '老聂', '老杨', '陈老师', '老余']) #创建通讯录部件elif index == 1:item = QtWidgets.QCalendarWidget() #创建日历部件elif index == 2:item = DigitalClock() #创建数字时钟部件elif index == 3:item = QtWidgets.QTextEdit('8:30 晨会') #创建记事本部件item.append('9:30 项目方案讨论')item.append('14:30 督办跟踪')item.append('16:00 OA文及邮件处理')else:view = QtWidgets.QGraphicsScene()  #创建图片展示部件view.addPixmap(QtGui.QPixmap(r"F:\屏保图片\壁纸20141214215651.jpg"))view.addText("Hello, world!")item = QtWidgets. QGraphicsView( view)self.setItem(index,item) #将item绑定到标签部件项的部件self.toolBox.setCurrentIndex(current) #恢复当前选中项

七、运行界面截图

广告

老猿关于PyQt的付费专栏《使用PyQt开发图形界面Python应用》只需要9.9元,该部分与第十五章的内容基本对应,但同样内容在付费专栏上总体来说更详细、案例更多。本节内容在付费专栏的《PyQt开发样例: 利用QToolBox开发的桌面工具箱Demo》。如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

  • 老猿Python博文目录
  • 专栏:使用PyQt开发图形界面Python应用
  • 老猿Python博客地址

PyQt开发实战: 利用QToolBox开发的桌面工具箱相关推荐

  1. 小米手环iOS开发实战(二):开发Demo让你的手环振动起来

    小米手环iOS开发实战(二):开发Demo让你的手环振动起来 上一节讲了CoreBluetooth的使用,理论知识很枯燥,那么现在先利用上一节讲的内容,做一个简易手环应用,实现连接/断开手环,查看手环 ...

  2. 最新仿映客直播APP开发实战项目IOS开发实战8天(最全最新)

    最新仿映客直播APP开发实战项目IOS开发实战8天 第 1 章:直播准备 1: [录播] 课程大纲介绍 09:56 2: [录播] 了解直播技术和腾讯云直播 09:54 3: [录播] 基础封装 23 ...

  3. PyQt开发样例: 利用QToolBox开发的桌面工具箱Demo

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 toolBox工具箱是一个容器部件,对应类为QToolBox,在其内有一列从上到下顺序排列 ...

  4. python手机app开发_利用python开发app实战的方法

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...

  5. android网络游戏开发实战pdf_Python项目开发实战+第2版PDF高清文档下载

    本书来自真正的开发现场,是BePROUD公司众多极客在真实项目中的经验总结和智慧结晶.作者从Python的环境搭建开始讲起,介绍了Web应用的开发方法.项目管理及审查.测试与高效部署.服务器调试等内容 ...

  6. AM5728(AM5708)开发实战之安装Debian 10桌面操作系统

    一 环境搭建 准备一个SD卡启动卡,能够正常引导板卡启动,后续会把Debian 10镜像安装到SD卡ext4分区 准备两个U盘,一个格式化成fat32文件系统,另一个格式化成ext4文件系统 下载De ...

  7. android平板开发板,利用开源开发板自制的平板电脑 | 雷锋网

    这款自制"平板电脑"主要部分是一块国产的开源开发板Mixtile(米太),外接一块TFT转接板装上7寸的触摸屏,配上两块亚克力(ACRYLIC)板做为设备的外壳(大家不要太在意整机 ...

  8. android网络游戏开发实战pdf_python爬虫开发与项目实战PDF高清文档下载

    随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原 ...

  9. unity应用开发实战案例_Unity开发实战游戏教学案例分享

    进行项目实战是快速入门或提升Unity开发的关键.Asset Store资源商店中,有大量完整项目模板和教学案例,帮助您通过项目实战,让你体会到Unity开发的成就感. 本文我们为大家准备了三款实战游 ...

最新文章

  1. 腾讯全力支持鸿蒙,腾讯宣布大力发展车联网,或与华为鸿蒙强强联合!
  2. SQL语句修改字段类型与第一次SQLServer试验解答
  3. SWT事件的四种写法
  4. ArcGIS实验教程——实验三十七:基于ArcGIS的太阳辐射分析案例教程
  5. linux之彻底卸载mysql
  6. 从蜜罐新技术看欺骗防御发展走向
  7. 素数的有关性质(二)欧拉函数的一些定理证明与计算
  8. Android studio Mac 版  Plugin Error Plugin “GsonFormat4DataBinding“ is incompatible
  9. CCF CSP201903-2二十四点
  10. .Net中应用XML动态生成窗体
  11. 开启打印服务Print Spooler
  12. WeCode在线少儿编程|为什么我们选择代码编程
  13. Centos6 安装可视化界面
  14. 人工智能视觉处理教程(包含源码)
  15. 聚焦数字经济新基建,复杂美再获认可
  16. 程序员用简单C语言一顿神操作,瞬间打造植物大战僵尸,无人不服
  17. 菜谱 延安特色美食小吃
  18. Cloud Storage
  19. 网络安全-网站后台的寻找+网页JS文件信息收集
  20. ---===制作全透明的窗口===---

热门文章

  1. vue-pdf 打印文字空白、每一页多一个空白页、电子签章不显示
  2. 自学python需要什么书籍-关于 Python 的经典入门书籍有哪些?
  3. HFDS命令行操作(开发重点)
  4. 禅与摩托车维修艺术(4)
  5. UEFI启动+GPT分区模式下双硬盘SSD+HDD+Win10安装Ubuntu18.04.1组成双系统
  6. 博尔德大学计算机专业本科,2020美国大学计算机专业本科排名
  7. 系统集成项目管理工程师计算题(沟通渠道)
  8. mysql 匹配多个字符,【单选题】在MySQL语句中,可以匹配0个到多个字符的通配符是( ) A. * B. % C. ? D. –...
  9. 通过计算机名查找当前域用户名,局域网中怎样通过IP查找计算机名
  10. dimm和udimm_Adata推出32GB DDR4-2666 UDIMM和SO-DIMM