在这篇Python文章中,我将向您展示如何使用Pyside2创建数字时钟。

Python的GUI的库常见包括Tkinter、PyQt5和Pyside2。Tkinter控件较少,适合开发简单工具。PyQt5和Pyside2则都是对Qt的封装,PyQt5由Riverbank Computing公司维护,历史更长,但是Pyside2因为由Qt公司维护,可以视为Qt的亲儿子,个人认为未来Pyside2 的前景会更好一些。此外PyQt是GPL/商业协议,PySide是LGPL/GPL/商业协议。

这是Python如何使用Pyside2创建数字时钟的完整代码

from PySide2.QtWidgets import QApplication, QWidget, QLCDNumber
from PySide2.QtCore import QTime, QTimer, SIGNAL
import sys
from PySide2.QtGui import QIcon

class DigitalClock(QLCDNumber):
    def __init__(self, parent = None):
        super(DigitalClock, self).__init__(parent)

        self.setSegmentStyle(QLCDNumber.Filled)

        timer = QTimer(self)
        self.connect(timer, SIGNAL('timeout()'), self.showTime)
        timer.start(1000)
        self.showTime()
        self.setWindowTitle("数字时钟 - www.linuxmi.com")
        self.resize(600, 400)

    def showTime(self):
        time = QTime.currentTime()
        text = time.toString('hh:mm')
        if(time.second() % 2) == 0:
            text = text[:2] + ' ' + text[3:]

        self.display(text)

myapp = QApplication(sys.argv)
window = DigitalClock()
window.show()
myapp.exec_()
sys.exit()

在上面的代码中,我们首先从Pyside2 库中导入了我们的类

from PySide2.QtWidgets import QApplication, QWidget, QLCDNumber
from PySide2.QtCore import QTime, QTimer, SIGNAL
import sys
from PySide2.QtGui import QIcon

这是我们的主窗口类,它继承自QLCDNumber,在这个类中,我们将创建QTimer类的对象,我们还将QTimer的超时信号与showTime槽函数连接起来,我们要创建这个。

另外,我们还在这个类中添加了setIcon()和pushButton()方法。

什么是QLCDNumber?

它可以显示十进制,十六进制,八进制或二进制数字。使用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用空格代替非法字符。

尽管可以使用value()检索数字值,但无法检索QLCDNumber对象的内容。如果您确实需要文本,我们建议您将馈入display()插槽的信号也连接到另一个插槽,并在其中存储值。

顺便说一句,QLCDNumber是Qt最古老的部分,其根源可以追溯到Sinclair Spectrum上的BASIC程序。

什么是QTimer类?

QTimer类为计时器提供了高级编程接口。要使用它,请创建一个QTimer,将其timeout()信号连接到适当的插槽,然后调用start()。从那时起,它将以固定的时间间隔发出timeout()信号。

我们已经将其与QTimer的超时()信号连接的插槽

 def showTime(self):
        time = QTime.currentTime()
        text = time.toString('hh:mm')
        if(time.second() % 2) == 0:
            text = text[:2] + ' ' + text[3:]

        self.display(text)

在这里每个Pyside2应用程序都必须创建一个应用程序对象。该 sys.argv 参数是命令行中的参数列表。

myapp = QApplication(sys.argv)

最后,我们进入应用程序的主循环。事件处理从这一点开始。mainloop从窗口系统接收事件,并将其分配给应用程序小部件。

myapp.exec_()
sys.exit()

现在运行完整的代码,结果如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注