PyQt4 精彩实例分析* 实例22 电子钟
来源:互联网 发布:怎样利用网络挣钱 编辑:程序博客网 时间:2024/05/01 02:32
本实例实现一个数字电子钟程序,效果图如下图显示于桌面上,并可随意拖动至桌面任意位置。
具体实现代码如下:
from PyQt4.QtGui import *from PyQt4.QtCore import *import sysclass DigiClock(QLCDNumber): def __init__(self,parent=None): super(DigiClock,self).__init__(parent) p=self.palette() p.setColor(QPalette.Window,Qt.blue) self.setPalette(p) self.dragPosition=None self.setWindowFlags(Qt.FramelessWindowHint) self.setWindowOpacity(0.5) timer=QTimer(self) self.connect(timer,SIGNAL("timeout()"),self.showTime) timer.start(1000) self.showColon=True self.showTime() self.resize(150,60) def mousePressEvent(self,event): if event.button()==Qt.LeftButton: self.dragPosition=event.globalPos()-self.frameGeometry().topLeft() event.accept() if event.button()==Qt.RightButton: self.close() def mouseMoveEvent(self,event): if event.buttons() & Qt.LeftButton: self.move(event.globalPos()-self.dragPosition) event.accept() def showTime(self): time=QTime.currentTime() text=time.toString("hh:mm") if self.showColon: text.replace(2,1,":") self.showColon=False else: text.replace(2,1," ") self.showColon=True self.display(text) app=QApplication(sys.argv)form=DigiClock()form.show()app.exec_()
数字电子钟类DigiClock继承自QLCDNumber类,类中重定义了鼠标按下事件和鼠标移动事件以使电子钟可随意拖动;showTime()函数用于显示当前的时间;dragPosition用于保存鼠标点相对电子钟窗体左上角的偏移值;showColon表示显示时间时是否显示“:”。
第9-11行完成电子钟窗体背景色的设置,在前面的实例中已经分析过利用调色板类QPalette进行控件颜色控制的方法,此处设置背景色为蓝色。
第15行调用QWidget类的setWindowFlags()函数设置窗体的标识,此处设置为Qt.FramelessWindowHint,表示此窗体为一个没有面板边框和标题栏的窗体。
第16行调用setWindowOpacity()函数设置窗体的透明度为0.5,即半透明,但此函数在X11系统中不起作用,当程序在Windows系统下运行时,此函数起作用,即电子钟半透明显示。
第18-20行完成电子钟中用于时间显示的定时器部分。
第18行创建一个定时器对象。
第19行连接定时器的timeout()信号与显示时间的槽函数showTime()。
第20行调用start()函数以1000毫秒为周期启动定时器。
第23行调用一次showTime()函数,初始时间显示。
第24行初始化showColon为True。
DigiClock的showTime()函数完成电子钟的显示时间的功能。
第39行调用QTime的currentTime()函数获取当前的系统时间,保存在一个QTime对象中。
第40行调用QTime的toString()函数把获取的当前时间转换成字符串类型。为便于显示,toString()函数的参数需指定转换后时间的显示格式。
H/h:小时(若使用H表示小时,则无论何时都以24小时制显示小时;若使用h表示小时,则当同时指定AM/PM时,采用12小时制显示小时,其他情况下仍采用24小时制进行显示)。
m:分钟。
s:秒钟。
AP/A:显示AM或PM。
Ap/a:显示am或pm。
可根据实际显示需要进行格式设置,如:
hh:mm:ss A 22:30:08 PM
H:mm:s a 10:30:8 pm
QTime的toString()函数也可直接利用Qt.DateFormat作为参数指定时间显示的格式,如:Qt.TextDate,Qt.ISODate,Qt.LocaleDate等。
第41-46行完成电子钟“时”与“分”之前的表示秒钟的两个点的闪显功能。
第47行调用QLCDNumber类的display()函数显示转换好的字符串时间。
鼠标按下事件响应函数mousePressEvent(QMouseEvent)和鼠标移动事件响应函数mouseMoveEvent(QMouseEvent)的重定义使电子钟能用鼠标在桌面上随意拖动。
鼠标按下响应函数中,首先判断按下的是否为鼠标左键,若是则保存当前鼠标点所在的位置相对于窗体左上角的偏移值dragPosition;如果按下鼠标右键,则退出窗体。
在鼠标移动响应函数中,首先判断当前鼠标状态,调用e.buttons()返回鼠标的状态,若为左侧按钮则调用QWidget的move()函数把窗体移动至鼠标当前点。由于move()函数的参数指的是窗体的左上角的位置,因此要用鼠标当前点的位置减去相对窗体左上角的偏移值dragPosition。
注:本文基本上是经过改编的《Linux窗口程序设计--Qt4精彩实例分析》一书的PyQt4 for windows版本
转自:http://blog.csdn.net/chumpklutz/article/details/6101077
- PyQt4 精彩实例分析* 实例22 电子钟
- *PyQt4 精彩实例分析* 实例17 综合布局实例
- PyQt4 精彩实例分析* 实例1 Hello Kitty!
- PyQt4 精彩实例分析* 实例2 标准对话框的使用
- PyQt4 精彩实例分析* 实例4 使用标准输入框
- PyQt4 精彩实例分析* 实例6 实现QQ抽屉效果
- PyQt4 精彩实例分析* 实例7 表格的使用
- PyQt4 精彩实例分析* 实例8 使用进度条
- PyQt4 精彩实例分析* 实例11 动态加载Ui
- PyQt4 精彩实例分析* 实例12 基本布局管理
- *PyQt4 精彩实例分析* 实例3 各类位置信息
- PyQt4 精彩实例分析* 实例13 多文档
- *PyQt4 精彩实例分析* 实例14 分割窗口
- PyQt4 精彩实例分析* 实例15 停靠窗口
- PyQt4 精彩实例分析* 实例18 可扩展对话框
- PyQt4 精彩实例分析* 实例21 不规则窗体
- *PyQt4 精彩实例分析* 实例23 程序启动画面
- *PyQt4 精彩实例分析* 实例6 实现QQ抽屉效果
- PyQt4 精彩实例分析* 实例21 不规则窗体
- servlet基础
- web服务器apache架构与原理
- 高通sensor core培训笔记
- 利用游标删除sql数据库表重复记录
- PyQt4 精彩实例分析* 实例22 电子钟
- 李阳英语视频全集
- 工具类:调试
- 字符串处理转换(华为2013校园招聘上机笔试题 )
- windows平台进程CPU占用率的计算
- ../thelib/libthelib.so: undefined reference to `dlopen'
- *PyQt4 精彩实例分析* 实例23 程序启动画面
- JS 毫秒转时间。
- Hash理解