#!/usr/bin/python

# QStopWatch -- a very simple stop watch

# Copyright (C) 2006 Dominic Battre <dominic {at} battre {dot} de>

# Copyright (C) 2013 ActivityWorkshop.net

#

# This program is free software; you can redistribute it and/or

# modify it under the terms of the GNU Library General Public

# License as published by the Free Software Foundation; either

# version 2 of the License, or (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

# Library General Public License for more details.

#

# You should have received a copy of the GNU Library General Public

# License along with this program; if not, write to the Free

# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

# Versions:

# 2006-11-18  version 1.0   - simple but fully functional stop watch

# 2006-11-18  version 1.0.1 - fixed problem with QString vs. Python string

# Obtained from http://kde-apps.org/content/show.php/QStopWatch?content=48810

# 2013-06-19  version 1.1   - ported to python 2.7, qt4; used QLCDNumber for time display

import sys

from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):

DEFAULT_WINDOW_TITLE = "Stopwatch"

def __init__(self, *args):

apply(QtGui.QMainWindow.__init__, (self,) + args)

self.mainWidget = QtGui.QWidget(self);

self.setCentralWidget(self.mainWidget);

self.mainLayout = QtGui.QVBoxLayout(self.mainWidget)

self.buttonsWidget = QtGui.QWidget(self.mainWidget);

self.buttonsLayout = QtGui.QHBoxLayout(self.buttonsWidget)

self.txTime  = QtGui.QLCDNumber(self.mainWidget);

self.txTime.setSegmentStyle(QtGui.QLCDNumber.Flat);

self.bnStart = QtGui.QPushButton("&Start", self.buttonsWidget);

self.bnClear = QtGui.QPushButton("&Clear", self.buttonsWidget);

self.connect(self.bnStart, QtCore.SIGNAL("clicked()"), self.slotBnStartClicked)

self.connect(self.bnClear, QtCore.SIGNAL("clicked()"), self.slotBnClearClicked)

self.buttonsLayout.addWidget(self.bnStart);

self.buttonsLayout.addWidget(self.bnClear);

self.mainLayout.addWidget(self.txTime);

self.mainLayout.addWidget(self.buttonsWidget);

self.counting = False;

self.msInLastLaps = 0;

self.timer = QtCore.QTimer(self);

self.connect(self.timer, QtCore.SIGNAL("timeout()"), self.slotTimerEvent);

self.displayTime(0, False)

self.setWindowTitle(self.DEFAULT_WINDOW_TITLE)

# reduce to minimum size

self.resize(self.minimumSizeHint())

def displayTime(self, msecs, exact):

ms = msecs % 1000

msecs /= 1000

sec = msecs % 60

msecs /= 60

min = msecs % 60

msecs /= 60

hours = msecs

if exact:

timestring = '%02d:%02d:%02d.%03d' % (hours, min, sec, ms)

self.txTime.setNumDigits(12 if hours > 0 else 9)

self.txTime.display(timestring)

self.setWindowTitle(self.DEFAULT_WINDOW_TITLE)

else:

timestring = '%02d:%02d:%02d' % (hours, min, sec)

self.txTime.setNumDigits(8 if hours > 0 else 5)

self.txTime.display(timestring)

self.setWindowTitle(timestring)

def slotBnStartClicked(self):

if ( self.counting ) :

print "stop  ", str(QtCore.QTime.currentTime().toString())

self.timer.stop();

self.msInLastLaps += self.startTime.msecsTo(QtCore.QTime.currentTime());

self.displayTime(self.msInLastLaps, True)

self.bnStart.setText("&Start")

else:

self.startTime = QtCore.QTime.currentTime()

print "start ", str(self.startTime.toString())

self.timer.start(500)

self.bnStart.setText("&Stop")

self.slotTimerEvent()

self.counting = not self.counting

def slotBnClearClicked(self):

print "clear";

self.msInLastLaps = 0;

self.startTime = QtCore.QTime.currentTime()

self.displayTime(0, not self.counting)

def slotTimerEvent(self):

self.displayTime(self.msInLastLaps + self.startTime.msecsTo(QtCore.QTime.currentTime()), False)

# Main method as the program entry point

def main(args):

app = QtGui.QApplication(args)

win = MainWindow()

win.show()

app.connect(app, QtCore.SIGNAL("lastWindowClosed()"), app, QtCore.SLOT("quit()"))

app.exec_()

if __name__=="__main__":

main(sys.argv)

python lcd 时间显示的更多相关文章

  1. python中时间格式

    问题:通过MySQLdb查询datetime字段,然后通过浏览器显示出来,得到的格式是:         'Thu, 19 Feb 2009 16:00:07 GMT'   (http呈现出来的格式) ...

  2. python datetime 时间日期处理小结

    python datetime 时间日期处理小结 转载请注明出处:http://hi.baidu.com/leejun_2005/blog/item/47f340f1a85b5cb3a50f5232. ...

  3. python 的时间与日期

    显示当前日期: import time print time.strftime('%Y-%m-%d %A %X %Z',time.localtime(time.time())) 或者 你也可以用: p ...

  4. python(时间模块,序列化模块等)

    一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon ...

  5. Python之时间表示

    Python的time模块中提供了丰富的关于时间操作方法,可以利用这些方法来完成这个需求. time.time() :获取当前时间戳 time.ctime(): 当前时间的字符串形式 time.loc ...

  6. 1、Python 日期时间格式化输出

    今天帮朋友写自动化脚本,又需要用格式化日期,又忘记怎么写了,还是写到自己博客里面,方便日后需要的时候看一眼吧.So,临时加一篇 Python 的文章. 1.Python的time模块 import t ...

  7. 【STM32H7教程】第51章 STM32H7的LTDC应用之LCD汉字显示和2D图形显示

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第51章       STM32H7的LTDC应用之LCD汉字 ...

  8. 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060上LCD横向渐变色显示出亮点问题的分析解决经验. 痞子衡前段时间在支持一个i.MXRT1060客户项目时遇到了LCD ...

  9. js获取当前时间显示在页面上

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

随机推荐

  1. P2P/WSN信任建模与仿真平台

    1.ART Testbed 该平台是基于多代理的信任仿真平台,官网的介绍如下: The Agent Reputation and Trust (ART) Testbed initiative has ...

  2. [ES6] for..in && for..of

    var ary = [ { id: 1, name: "Zhentian" }, { id: 2, name: "Alice" } ]; for..in Pri ...

  3. MVC三和,你能辨别它?

    上次我们聊的时间MVC,而之前我们学习过三层.那么我们不禁就要问,他们说的是一回事吗.他们有什么联系吗? 三层架构(3-tier application)通常意义上的三层架构就是将整个业务应用划分为: ...

  4. Ubuntu 14.04 下手动安装Firefox的Flash插件

    有时候我们不得不採用手动安装一些软件. Ubuntu 14.04 下手动安装Firefox的Flash插件有下面几步 1. 下载Flash插件 下载地址为http://get.adobe.com/cn ...

  5. java 多态,和方法覆盖分析(转)

    多态 (Polymorphism) 大家应该都不陌生,它是我们开发面向对象系统的“老朋友”了 .但是老朋友也会有“烦心”的时候啊,呵呵.有时候 不注意,还真会被它难到.譬如下面这个例子(thank H ...

  6. 对return 语句的正确性和效率进行检查

    注意事项如下: 1. return 语句不可返回指向"堆栈内存“的”指针“或者”引用“,因为该内存单元在函数体结束时被自动释放. //错误 char* Func(void) { char s ...

  7. Js遍历Josn对象(内容对比页实现思路)

    更好的遍历Josn的方法,利用jquery的each方法: var arr1 = [ "one", "two", "three", &quo ...

  8. (转)JSON 之FastJson解析

    一.阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parse ...

  9. eclipse频繁崩溃退出

    1.出现下面的崩溃情况,并且改变内存大小都没有用,而且总是生成下面两个错误日志文件: 解决: 在eclipse.ini文件里面添加一行 -XX:-UseLoopPredicate 2.eclipse崩 ...

  10. DOM 添加 / 更新 / 删除 XML (CURD)

    获得Document /**     * 获取文档     * 1.获得实例工厂     * 2.获得解析器     * 3.获得document     */ 添加结点 /**     * 1.获得 ...