Qt5 Python GUI 编程指南
创建时间:2018-12-10  访问量:6787  8  0

Qt5 Python GUI 编程指南

以类 LCD 液晶数字形式显示系统时钟

液晶显示(LCD)数字是一个七段显示,通常用于电子设备上的显示。这些LCD数字比点阵显示更具有可读性。让我们创建一个应用程序以使用类似LCD的数字显示系统时钟。

如何去做...

在这个应用中,我们将使用QTime类来获取当前系统的时间。根据下面的步骤来创建这个应用程序:

  1. 打开Qt Designer并基于Dialog without Buttons模板新建一个应用程序。

  2. 将应用保存为demoLCD.ui。

  3. 因为我们想要显示类似LCD的数字,所以要拖动LCD Number部件放到窗体上,如下面的截图所示:

  4. 在Property Editor窗口中,将LCD Number部件的Width和Height属性分别设置为100和40,仅仅让系统时钟能够完整显示。使用pyuic5命令将.ui的XML文件转换成Python代码。生成的Python文件为demoLCD.py,这个文件可以在本书源代码中找到。

  5. 创建一个名为callLCD.pyw的Python脚本并导入demoLCD.py代码,以调用用户界面设计并通过LCD Number部件显示当前系统时钟。

  6. 脚本必须包含一个定时器以使LCD显示在固定时间段内保持更新。callLCD.pyw脚本的Python代码如下所示:

import sys
from PyQt5.QtWidgets import QDialog, QApplication
from demoLCD import *
class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        timer = QtCore.QTimer(self)
        timer.timeout.connect(self.showlcd)
        timer.start(1000)
        self.showlcd()
    def showlcd(self):
        time = QtCore.QTime.currentTime()
        text = time.toString('hh:mm')
        self.ui.lcdNumber.display(text)
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

它是如何工作的...

在这个代码中,你可以看到创建了一个QTimer的实例,名为timer,并且它的timeout()信号与showlcd()方法相关联。每当timeout()信号产生时,就会调用这个showlcd()方法。也可以通过start()方法来设置定时器每隔1000毫秒就发出一个timeout()信号。

在showlcd()方法中,你获取当前系统时钟,并转换成字符串类型,以HH:MM的格式显示在LCD Number部件上,如下截图所示: