先上代码:
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("Digital Clock")
self.resize(300, 200)
self.setIcon()
def setIcon(self):
appIcon = QIcon("icon.png")
self.setWindowIcon(appIcon)
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()
首先导入要用的库:
from PySide2.QtWidgets import QApplication, QWidget, QLCDNumber
from PySide2.QtCore import QTime, QTimer, SIGNAL
import sys
from PySide2.QtGui import QIcon
然后是继承QLCDNumber这个主窗口类。在这个类中,我们将创建
QTimer
类的对象,然后
把
QTimer
的
timeout
信号连接到
showTime
这个槽。
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会用空格替换非法字符。
QLCDNumber对象无法直接获取内容,但可以使用value()得到数值。如果您确实需要文本,我们建议您将给display() 槽提供信号的源连接到另一个槽,并将值存储在那里。
顺便说一句,QLCDNumber是Qt中最古老的部分,它的根源可以追溯到BASIC程序。
QTimer 类是什么 ?
QTimer类为定时器提供了一个高级编程接口。要使用它,先创建一个QTimer,将timeout()信号连接到适当的槽,并调用start()。然后它将以固定的间隔发出timeout()信号。
下面这个槽就连接了timeout()信号:
def showTime(self):
time = QTime.currentTime()
text = time.toString('hh:mm')
if(time.second() % 2) == 0:
text = text[:2] + ' ' + text[3:]
self.display(text)
运行一下看效果:
如果不清楚其它代码含义,请参考前面课程:
Python界面编程第一课:我们开始用Pyside2 (Qt For Python)
Python界面编程第二课:Pyside2 创建窗口 (Python GUI)
Python界面编程第三课:Pyside2 (Qt For Python)给窗口加个图标
Python界面编程第四课:Pyside2 (Qt For Python)创建图标模式
Python界面编程第五课:Pyside2 (Qt For Python)怎么创建控件提示Tooltip
Python界面编程第六课:Pyside2 (Qt For Python),QPushButton按钮的信号与槽