对于基于Python+PyQt的框架结构的程序开发,前面已经讲了很多小例子了,有兴趣的小伙伴们可以翻看下前面的文章。

总体来说,实现相同的功能,相比于其它如C/C++等编程语言,确实简单太多了。

下面,再给出一个小例子,使用PyQt5界面库,在Python3上来实现一个简单的颜色拾取器的小工具,下面看看具体的实现过程吧。

1、实例说明

本例运行界面如下图所示,实现的功能是,实时捕捉当前鼠标所在位置的颜色并进行显示,显示结果包括颜色指示、颜色的RGB值、颜色的CSS值及当前鼠标的坐标值等信息。

2、实现思路

可考虑在定时器超时事件中每隔一段时间(如20ms)取一次当前鼠标所在的位置的颜色信息,对该颜色值进行解析并分别显示其RGB值和CSS样式的值。

在PyQt中进行编程实现时,需要考虑以下两个问题:

  • 如何取当前鼠标的位置信息?
  • 如何获取当前位置的颜色值并将其分解为RGB值和CSS值?

对于第一个问题,可使用PyQt类中的QCusor类的pos()函数实时获取当前的鼠标位置信息。

对于第二个问题,可使用QScreen类的grabWindow()函数,将当前鼠标所在区域存储为QPixmap类型的画布里面,然后再使用toImage()函数将其转化为图像,有了图像信息后,就可获取该图像上任意像素点的颜色信息(QColor类型)了。最后使用QColor类的red()、green()、blue()函数分别获取其RGB值即可。对于颜色的CSS值显示,直接将RGB值转换为16进制显示即可。

3、核心代码实现

在定时器超时槽函数里面实现该软件的具体功能,其代码(不足20行)如下图所示:

代码简要解释如下:

(1)第48-50行,使用QCusor类的pos()函数获取当前的鼠标位置信息x、y并显示。

(2)第52-56行,使用QScreen类的grabWindow()函数,将当前鼠标所在区域存储到QPixmap类型的pixmap变量里面,使用toImage()函数将其转化为图像,然后使用pixel()函数获取该图像上(0,0)像素点的颜色信息,最后使用QColor类的red()、green()、blue()函数分别获取其RGB颜色的分量值。

(3)第58-60行,将RGB颜色进行显示,并在label控件上使用样式表设置其背景色进行实时指示当前鼠标所在位置的颜色信息。

(4)第62-64行,将R、G、B颜色值转换为16进制,显示其CSS值信息。

4、完整代码实现

整个工程除了上面的核心代码实现外,还包括界面的布局、定时器创建、槽函数关联等内容,程序的完整实现代码如下图所示:

程序主窗口基类为QWidget类,代码简要解释如下:

(1)第9-14行,类初始化函数,调用initUI函数并创建定时器、设置槽函数关联及启动定时器等。

(2)第16-40行,具体的界面设计函数,包括控件的创建/布局、窗口的居中设置、标题、图标设置等。

(3)第61-65行,创建窗口并显示。

5、总结

总体来说,这个例子界面比较简单,代码量比较少,也比较好理解,运行上面的程序后,即可出现前面的软件界面,当移动鼠标时,可在界面上实时显示当前鼠标位置的颜色信息。

本文实现颜色拾取器的小工具,仅仅用了不到70行的代码,试想一下,如果你用纯粹的C++语言来实现相同的功能,将需要多少代码量呢?所以,如果你做软件界面开发的话,Python+PyQt的框架结构真的是一个不错的选择。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!

mfc 鼠标移动到 button上面时 背景颜色改变_Python3与PyQt5编程示例:实现颜色拾取器小工具...相关推荐

  1. php改变鼠标箭头形状手指,dreamweaver怎么让鼠标移过button按钮时,鼠标变成手指形状手指形状?...

    用cursor属性可以实现,可选值及说明如表2.1.6.2所示. 表2.1.6.2 cursor属性的可选值 可选值说明 hand手型 crosshair十字型 text鼠标移动到水平文本上的样式 w ...

  2. JQuery------实现鼠标摁下抬起时div背景色改变

    作用:使用自定义一个按钮 代码: <div class = 'btn'>按钮</div> $(".btn").mousedown(function () { ...

  3. 非常轻量又实用的鼠标拾色器小工具

    效果 下载 链接:https://download.csdn.net/download/qq_39706570/14502332 使用教程 第一步:双击打开软件: 第二步:设置电脑屏幕的缩放与布局为1 ...

  4. 鼠标指针经过时背景变色

    目录 一.如何使用鼠标指针经过时背景变色? 二.使用步骤 1.CSS(表格的样式) 2.表格(5行7列的一个表格) 2.Script部分(实现鼠标指针经过时背景变色效果) 总结 提示:以下是本篇文章正 ...

  5. html超链接点击状态改变背景颜色,div css鼠标悬停锚文本超链接文字背景颜色或图片变化...

    css鼠标悬停超链接文字上时背景改变,鼠标经过文字链接时(悬停),文字的背景图片发生改变(出现背景图片或背景颜色). 鼠标经过悬停在超链接文字上时背景颜色或背景图片出现或改变教程篇. 此DIV CSS ...

  6. 一个快速去除黑背景和其他颜色背景,生成透明PNG图的小工具

    做粒子效果或者其他一些图案的时候,时常能找到不少原图,但是却有黑色的背景或者其他背景色,导致用起来比较麻烦.这个小工具就可以方便的去除黑背景,生成透明PNG图,可以把想要的图案方便的取出来. 链接请见 ...

  7. android输入时背景颜色,Button根据EditText输入状态改变背景颜色

    需求 Button随EditText输入状态改变颜色 有3个不同颜色状态, EditText未输入时,Button处于不可点击状态 EditText输入时,Button处于高亮状态 EditText输 ...

  8. 鼠标指针经过表格时背景变换颜色

    当表格中单元格比较多时,可以在用户鼠标指针经过时把当前行添加背景颜色,使表格内容显得清晰和一目了然,更容易阅读.接下来我们使用鼠标指针经过事件onmouseover和鼠标指针离开事件onmouseou ...

  9. CSS实现鼠标悬浮时背景图片拉近且增加遮罩层效果

    效果预览 点击查看效果   我们在浏览网站时会发现有一些图片在鼠标悬浮在上时会有放大拉近的效果.   想要实现这个效果有两种方法,第一种方法是控制背景图片,第二种方法是控制插入的图片,我们这里介绍第一 ...

  10. web前端中——this指向以及this的应用,函数的调用——this代码举例说明——举例:当鼠标划到列表上时,出现div内容,当鼠标移开列表时,div隐藏

    一: //this:这个 //想要知道this代表着什么可以直接在中输入alert(this); //由此可以看出window是JS中的"老大" eg:alert(1);其实就是w ...

最新文章

  1. AAAI 2020 | 自动化所:基于对抗视觉特征残差的零样本学习方法
  2. 无人车时代:用深度学习辅助行人检测
  3. 解决编译失败 Attribute meta-data#android.support.VERSION@value value=(26.0
  4. weblogic不用密码启动服务
  5. java获取object属性值_java反射获取一个object属性值代码解析
  6. Linux下程序报出/bin/bash: No such file or directory
  7. C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
  8. Elasticsearch 节点磁盘使用率过高,导致ES集群索引无副本
  9. Linux服务器配置和管理:虚拟机安装CentOS6.7
  10. XML DataBase之Xindice(二)
  11. MacOS如何修复磁盘权限
  12. easyui 分页保存checkbox的选中状态
  13. 20190906每日一句
  14. 数据结构--二叉树的二叉链表实现
  15. 文书档案管理系统服务器版,文书档案管理系统
  16. python numpy库数组的存取
  17. 物联网数据多又杂?好用的数据可视化服务来了
  18. 联想电脑虚拟化开启方法
  19. 解析下载blob视频
  20. moment的常见应用

热门文章

  1. 「leetcode」127. 单词接龙【广度优先搜索】超详细讲解!
  2. 关于哈希表,你该了解这些!
  3. Lightroom Classic 教程,如何在 Lightroom 中创建黑色电影效果?
  4. 如何解决Mac上安装Axure首次打开报错的问题?
  5. X Lossless Decoder for mac(XLD音频无损解码器)
  6. Mac上“照片”的终极工具箱​​​​ PowerPhotos
  7. 防止Mac电脑屏幕进入休眠状态,该怎么设置?
  8. HDU 1203 I need a offer! (01背包)
  9. 为Java应用程序提供了空前的代码保护控件DashO-Pro
  10. avrdude: stk500_getsync(): not in sync: resp=0x00