保定led产品厂家联盟

PyQt5:液晶显示屏

学点编程吧 2019-11-30 15:48:04


上期我们介绍了微调框(QDoubleSpinBox),这期我们介绍一下PyQt中的液晶显示屏(QLCDNumber)。



正文


1

总体介绍


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将非法字符替换为空格。

一些常用方法


更多的介绍请见官网:https://doc.qt.io/qt-5/qlcdnumber.html


二维码直达:

2

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.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类的组合。它可以从系统时钟读取当前的日期时间。

  1. 首先我们计算当前时间,这里我们使用了currentMSecsSinceEpoch()将其转换成当前时间到1970-01-01T00:00:00世界协调时间以来的毫秒数。

  2. 其次因为冬季奥运会的时间是2020年2月4日开始,我们假设是0:0:0开始的,我们创建一个QDatetime对象,并使用toMSecsSinceEpoch()返回2020年2月4日0:0:0自1970-01-01T00:00:00.000世界协调时间以来的毫秒数。

  3. 再次我们将上面的结果进行相减,得到了当前时间到冬季奥运会开幕时的时间间隔。

  4. 最后我们进行了一些列的计算,得到天数、小时数、分钟数、秒数并显示在LCD上。

3

最后


ok,今天的介绍暂时就到这里吧,本周有事所以发得有点迟了。如果你喜欢本篇文章,请给我点赞、赞赏推荐),分享给你的好友们吧!

如果你想要本次教程中的相关源码,请关注微信公众号:学点编程吧,发送pyqt520,会自动得到相应的百度网盘下载链接。

苹果用户也能支持一下啦,长按二维码扫描吧!


看完本文有收获?请转发分享给更多人




猜你喜欢:

更多的PyQt5文章请在微信公众号/在线课程/图文教程中查找。


学点编程吧,你私人的计算机学习顾问~!

长按左边二维码

感谢您的关注


友情链接

Copyright © 保定led产品厂家联盟@2017