Python编程:一个基于PyQt的Led控件库,建议收藏
1、控件说明在Github上 , 偶然发现了一个基于PyQt5的第三方Led指示灯控件库 , 使用起来非常方便 , 控件外观也比较漂亮 , 更难能可贵的是作者源代码写得比较简洁 , 仅仅才约200行左右 , 可以作为一个在PyQt中写自定义控件方法的非常好的学习例子 。 这个控件具有以下特点:
- 提供了3种外形可供选择 , 分别为:'capsule', 'circle', 'rectangle'等
- 提供了7种颜色可供选择 , 分别为:'blue', 'green', 'orange', 'purple', 'red', 'yellow'等
文章插图
2、安装及使用方法在Python下使用pip安装即可:
pip install pyqt-led
在代码中使用时 , 只需使用以下语句导入该库的LED类即可:from pyqt_led import Led
在该库中 , 提供了几个主要的方法函数 , 包括set_on_color、set_off_color、set_shape、turn_on、turn_off等函数 , 分别设置Led的开/关颜色、形状及设置开、关状态等 。3、使用例子一个简单的例子 , 代码如下图所示:
import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *import numpy as npfrom pyqt_led import Ledclass Demo(QWidget):def __init__(self, parent=None):QWidget.__init__(self, parent)self._shape = np.array(['capsule', 'circle', 'rectangle'])self._color = np.array(['blue', 'green', 'orange', 'purple', 'red','yellow'])self._layout = QGridLayout(self)self._create_leds()self._arrange_leds()self.resize(400, 200)self.setWindowTitle('pyqt-led Demo')def keyPressEvent(self, e):if e.key() == Qt.Key_Escape:self.close()def _create_leds(self):for s in self._shape:for c in self._color:exec('self._{}_{} = Led(self, on_color=Led.{}, shape=Led.{}, build="debug")'.format(s, c, c, s))exec('self._{}_{}.setFocusPolicy(Qt.NoFocus)'.format(s, c))exec('self._{}_{}.turn_on(True)'.format(s, c))def _arrange_leds(self):for r in range(3):for c in range(6):exec('self._layout.addWidget(self._{}_{}, {}, {}, 1, 1, \Qt.AlignCenter)'.format(self._shape[r], self._color[c], r, c))app = QApplication(sys.argv)demo = Demo()demo.show()sys.exit(app.exec_())
运行这个程序后 , 即可出现本文开头所示的在一个窗口上显示了不同形状、不同颜色的Led的窗口 。 默认运行时显示的为全亮状态 , 当设置为全灭状态时 , 如下图所示:文章插图
在代码中 , Led类实例化时 , 其构造函数原型如下所示:
【Python编程:一个基于PyQt的Led控件库,建议收藏】
Led(parent, on_color=green, off_color=black, shape=rectangle, build='release')
可传入父窗口、初始的亮颜色、灭颜色、形状及状态参数 。对于需要在程序开发中使用指示灯的情况 , 如显示各种程序的运行状态等 , 应该说这是一个比较实用的库了 。 当然 , 由于源代码比较简单 , 你也可以在其基础上进一步修改订制 , 比如添加其它形状、颜色等选项设置 , 以满足自己的项目使用要求 。
本文由编码那些事原创 , 欢迎关注+转发+收藏+点赞 , 带你一起长知识!
- 车企|华为不造车!但任正非加了一个有效期,3年
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 发展|新基建发展迅猛,必然会是一个巨大的市场机遇
- 缺点|骁龙865+12GB已降至2399,X轴马达+55W快充,缺点只有一个
- 空间|垃圾文件正在吞噬你的C盘空间用这四种方法,还你一个干净的C盘
- 商业|AC有望建立一个商业帝国吗?
- 中国汽车|2020年,我们攒了一个局,串了一条链,下了一盘棋
- 走心|平安夜还在送苹果?太不走心了,教你几招,快来物色一个