项目中需要设置秒的步长,自己做下总结,方便以后再使用,可能写的有些麻烦,如果有好的办法,希望能给说下。
代码如下:
from PyQt5.QtCore import * from PyQt5.QtWidgets import * import sys class TimeEdit(QTimeEdit): def __init__(self, parent=None): super(TimeEdit, self).__init__(parent) self.lastTimeSec = 0 self.lastTimeMin = 0 self.lastTimeHour = 0 self.setMaximumTime(QTime(12, 0, 0)) # 设置最大计时 self.setWrapping(True) # 设置计时循环,到达最大时循环从0开始 def stepBy(self, steps): # 重写stepBy函数,设置秒的步长,这里设置秒的步长为5 currentSec = self.time().second() # 获得当前的秒值 if self.currentSectionIndex() == 2: # 如果当前点击的是秒 if steps > 0: # 大于0表示点击的是增长 currentSec += 5 # 步长为5 if currentSec >= 60: currentSec = 0 else: # 小于0表示点击的是减小 currentSec -= 5 if currentSec < 0: currentSec = 55 self.setTime(QTime(self.time().hour(), self.time().minute(), currentSec)) # 设置显示的时间 else: # 如果不是操作的秒,则使用父类的方式 super().stepBy(steps) class MyWin(QMainWindow): def __init__(self, parent=None): super(MyWin, self).__init__(parent) self.setWindowTitle("timeEdit test") self.initUi() def initUi(self): hLayout = QHBoxLayout() timeEdit = TimeEdit(self) timeEdit.setDisplayFormat("HH:mm:ss") hLayout.addWidget(timeEdit) self.setLayout(hLayout) if __name__ == "__main__": app = QApplication(sys.argv) view = MyWin() view.show() sys.exit(app.exec_())
效果如下: