【PyQt5-Qt Designer】液晶显示屏(QLCDNumber)
液晶显示屏(QLCDNumber)
总体介绍
QLCDNumber小部件显示一个类似LCD的数字。
它可以显示任何大小的数字。它可以显示十进制,十六进制,八进制或二进制数字。使用display()槽连接数据源很容易,该槽被重载以获取五种参数类型中的任何一种。
还有一些槽函数可以用setMode()改变基数,用setSmallDecimalPoint()来改变小数点。
当QLCDNumber被要求显示超出范围的东西时,会发出overflow()信号。范围由setDigitCount()设置,但setSmallDecimalPoint()也影响它。如果显示设置为十六进制,八进制或二进制,则显示该值的整数等效值。
这些数字和其他符号可以显示:0/O,1,2,3,4,5/S,6,7,8,9/g,减号,小数点,A,B,C,D,E, F,h,H,L,o,P,r,u,U,Y,冒号,度数符号(在字符串中单引号)和空格。 QLCDNumber将非法字符替换为空格。
一些常用方法

更多的介绍请见官网:QLCDNumber Class
QLCDNumber的小例子
先来看看具体例子的效果吧。

部分核心代码如下:
class Example(QWidget):
def initUI(self):
self.resize(370,190)
self.setWindowTitle('关注微信公众号:学点编程吧--倒计时:LCD数字')
self.lcd = QLCDNumber(self)
lb = QLabel("距离2022年北京-张家口冬季奥林匹克运动会还有",self)
self.lcd.setDigitCount(12)
self.lcd.setMode(QLCDNumber.Dec)
self.lcd.setSegmentStyle(QLCDNumber.Flat)#Mac系统需要加上,否则下面的color不生效。
self.lcd.setStyleSheet("border: 2px solid black; color: red; background: silver;")
time = QTimer(self)
time.setInterval(1000)
time.timeout.connect(self.refresh)
time.start()
self.show()
def refresh(self):
startDate = QDateTime.currentMSecsSinceEpoch()
endDate = QDateTime(QDate(2020, 2, 4), QTime(0, 0, 0)).toMSecsSinceEpoch()
interval = endDate - startDate
if interval > 0:
days = interval // (24 * 60 * 60 * 1000)
hour = (interval - days * 24 * 60 * 60 * 1000) // (60 * 60 * 1000)
min = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000) // (60 * 1000)
sec = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) // 1000
intervals = str(days) + ':' + str(hour) + ':' + str(min) + ':' + str(sec)
self.lcd.display(intervals)
代码总体不复杂,唯一需要注意的地方就是下面倒计时的计算,当然我的方法不一定最好,如果你有更好的欢迎交流。
self.lcd = QLCDNumber(self)
self.lcd.setDigitCount(12)
self.lcd.setMode(QLCDNumber.Dec)
self.lcd.setStyleSheet("border: 2px solid black; color: red; background: silver;")
- 新建一个QLCDNumber对象。
- 将新建的QLCDNumber对象设置为12位。
- setMode()该属性保存当前的显示模式(数字库),对应于当前显示模式,即二进制、八进制、十进制(默认)和十六进制中的一种。十进制模式可以显示浮点值,其他模式显示整数等值。
- setStyleSheet()设置LCD的外观,样式介绍如下:

time = QTimer(self)
time.setInterval(1000)
QTimer类提供重复性和单次定时器。QTimer类为定时器提供高级编程接口。要使用它,请创建一个QTimer,将其timeout()信号连接到相应的插槽,然后调用start()。从此以后,它将以固定的时间间隔发出timeout()信号。
setInterval()该属性拥有以毫秒为单位的超时时间间隔。此属性的默认值为0。
def refresh(self):
startDate = QDateTime.currentMSecsSinceEpoch()
endDate = QDateTime(QDate(2020, 2, 4), QTime(0, 0, 0)).toMSecsSinceEpoch()
interval = endDate - startDate
if interval > 0:
days = interval // (24 * 60 * 60 * 1000)
hour = (interval - days * 24 * 60 * 60 * 1000) // (60 * 60 * 1000)
min = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000) // (60 * 1000)
sec = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) // 1000
intervals = str(days) + ':' + str(hour) + ':' + str(min) + ':' + str(sec)
self.lcd.display(intervals)
因为我们设置的超时间隔是1000ms(1秒),所以每隔1秒我们就会调用refresh()这个槽函数。在这个槽函数中我们要不断的进行倒计时的计算。
QDateTime类提供日期和时间函数。QDateTime对象包含日历日期和时钟时间(“日期时间”)。它是QDate和QTime类的组合。它可以从系统时钟读取当前的日期时间。
- 首先我们计算当前时间,这里我们使用了currentMSecsSinceEpoch()将其转换成当前时间到1970-01-01T00:00:00世界协调时间以来的毫秒数。
- 其次因为冬季奥运会的时间是2020年2月4日开始,我们假设是0:0:0开始的,我们创建一个QDatetime对象,并使用toMSecsSinceEpoch()返回2020年2月4日0:0:0自1970-01-01T00:00:00.000世界协调时间以来的毫秒数。
- 再次我们将上面的结果进行相减,得到了当前时间到冬季奥运会开幕时的时间间隔。
- 最后我们进行了一些列的计算,得到天数、小时数、分钟数、秒数并显示在LCD上。
跟着教程自己也写了一个小例子,效果如下:

完整代码:
from PyQt5.QtWidgets import (QApplication,QWidget,QLCDNumber,QGridLayout,QLabel)
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt,QTimer,QDateTime,QDate,QTime
import sys class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.setGeometry(300,300,400,400)
self.setWindowTitle("LCD显示")
gridLayout = QGridLayout()
self.lb = QLabel("距离2019年农历新年还有")
self.lb.setFont(QFont("微软雅黑",26,QFont.Bold))
self.lb.setStyleSheet("background-color:rgb(50,205,50)")
# self.lb.setStyleSheet("color:rgb(255,215,0)")
self.lb.setAlignment(Qt.AlignCenter)
self.lcd1 = QLCDNumber()
self.lcd1.setDigitCount(20) #设置显现的范围长度为20
self.lcd1.setMode(QLCDNumber.Dec)
self.lcd1.setSegmentStyle(QLCDNumber.Flat)
self.lcd1.setStyleSheet("border :2px solid black;color:red;background:silver;")
self.lcd2 = QLCDNumber()
self.lcd2.setDigitCount(20) # 设置显现的范围长度为20
self.lcd2.setMode(QLCDNumber.Dec)
self.lcd2.setSegmentStyle(QLCDNumber.Flat)
self.lcd2.setStyleSheet("border :3px solid black;font-size:22px;color:blue;background:pink;") timer = QTimer(self)
timer.setInterval(1000)
timer.timeout.connect(self.refresh) #隔1000ms 发射一次信号
timer.start() gridLayout.addWidget(self.lcd1, 0, 0, 1, 4)
gridLayout.addWidget(self.lb,1,0,1,4)
gridLayout.addWidget(self.lcd2,2,0,1,4)
self.setLayout(gridLayout) def refresh(self):
currentDateTime = QDateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss")
self.lcd1.display(currentDateTime) startDateTime = QDateTime.currentMSecsSinceEpoch()
endDateTime = QDateTime(QDate(2019,2,4),QTime(0,0,0)).toMSecsSinceEpoch()
interval = endDateTime - startDateTime
if interval>0:
days = interval // (24*60*60*1000)
hours = (interval- days*60*60*1000) // (60*60*1000)
mins = (interval- days*60*60*1000- hours*60*60*1000) // (60*1000)
secs = (interval- days*60*60*1000- hours*60*60*1000 - mins *60*1000) // 1000
intervals = str(days) + "D-" + str(hours) + ":" + str(mins) + ":" + str(secs)
self.lcd2.display(intervals) if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
【PyQt5-Qt Designer】液晶显示屏(QLCDNumber)的更多相关文章
- 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,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...
- PyQt5(1)——Qt Designer初探
相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件 可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...
- Win10安装PyQt5与Qt Designer【转】
https://blog.csdn.net/u011342224/article/details/78879633 1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 ...
- Win10安装PyQt5与Qt Designer
1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5- ...
- pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例 脚本专栏 python 1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮.并转换成mai ...
随机推荐
- AllPay(欧付宝)支付接口集成
AllPay,http://www.allpay.com.tw/,欧付宝是台湾知名的第三方支付公司,拥有丰富的支付模式(支持和支付宝.财付通),只需要一次对接,各种支付模式均可使用. 接口编写SDK: ...
- Scala学习笔记——函数和闭包
1.本地函数 可以在一个方法内再次定义一个方法,这个方法就是外部方法的内部私有方法,省略了private关键字 2.头等函数 var increase = (x: Int) => x + 1 S ...
- 安卓开发笔记——丰富多彩的TextView
随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
场景: 在开发工作中,有时我们需要实现一组图片循环滚动的情况.当我们使用 UIScrollView 结合 UIImageView 来实现时,一般 UIImageView 会尽量考虑重用,下面例子是以( ...
- 如何查看tomcat启动异常日志详情
我的电脑同时使用两个jdk版本,默认1.7,eclipse使用的是1.8,,由于项目启动时有加载类需要jdk1.8的包,1.7不支持.所以导致项目在eclipse直接能够跑,而在外面的tomcat跑是 ...
- JQuery Easyui引入easyui-lang-zh_CN.js后出现乱码的问题解决方法
最近使用Easyui做项目,发现引入easyui-lang-zh_CN.js单元后页面会出现乱码,无论设置<meta>.还是Response都不能解决问题.用记事本打开easyui-lan ...
- [转] - Spark排错与优化
Spark排错与优化 http://blog.csdn.net/lsshlsw/article/details/49155087 一. 运维 1. Master挂掉,standby重启也失效 Mast ...
- 怎样将flac音频格式转换成MP3格式
Flac音频格式怎样转换成MP3格式呢?随着现在音频格式的不断多样性,生活中很多时候我们都会遇到音频格式转换的问题,如flac音频转MP3的问题,那么我们应该如何去解决这个问题呢?下面我们就一起去来一 ...
- STL的基本介绍
STL是标准模板库,现在是c++的一部分 STL被组织为下面的17个头文件:<algorithm>.<deque>.<functional>.<iterato ...
- 体验 ASP.NET Core 集成测试三剑客:xUnit.net、TestServer、EF Core InMemory
这是昨天解决的一个问题,针对一个 web api 的客户端代理类写集成测试,既要测试 web api,又要测试 web api 客户端. 测试 web api,就要在运行测试时自动启动 web api ...