PyQt制作支持拖动缩放小时钟,pyqt拖动缩放,这个用PyQt制作支持拖
PyQt制作支持拖动缩放小时钟,pyqt拖动缩放,这个用PyQt制作支持拖
这个用PyQt制作支持拖动缩放小时钟Python源代码是一位网友写的,感觉效果不错拿来测试并改进下。还没有开始操作先分享给大家一起看看。
虽然这个代码是2012年比较早了,但略微改动下,应该还是可以使用的。
#coding=utf-8'''Created on 2012-4-6'''import sysfrom PyQt4 import QtGui, QtCore from PyQt4.QtCore import Qtfrom PyQt4.QtCore import QPointfrom PyQt4.QtCore import QTimerfrom PyQt4.QtCore import QTime from PyQt4.QtGui import QPainterfrom PyQt4.QtGui import QColor from PyQt4.QtGui import QPolygonfrom PyQt4.QtCore import SIGNAL as signalclass Clock(QtGui.QWidget): ''' classdocs ''' def __init__(self): ''' Constructor ''' super(Clock, self).__init__() self.hourColor=QColor(127, 0, 127); self.minuteColor=QColor(0, 127, 127, 191) self.secondColor=QColor(127, 127,0,120) self.initUI() self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(30) self.show() def handChange(self): self.side = min(self.width(), self.height()) self.hand=(max(self.side/200,4), max(self.side/100,8), max(self.side/40,30)) self.hourHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2])]) self.minuteHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2]*2)]) self.secondHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2]*3)]) def set_transparency(self, enabled): if enabled: self.setAutoFillBackground(False) else: self.setAttribute(Qt.WA_NoSystemBackground, False) #下面这种方式好像不行# pal=QtGui.QPalette()# pal.setColor(QtGui.QPalette.Background, QColor(127, 127,10,120))# self.setPalette(pal) self.setAttribute(Qt.WA_TranslucentBackground, enabled) self.repaint() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Clock') self.handChange() self.rightButton=False # 下面两个配合实现窗体透明和置顶 sizeGrip=QtGui.QSizeGrip(self) self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow ) #self.setMouseTracking(True); self.trans=True self.set_transparency(True) quitAction = QtGui.QAction(QtGui.QIcon('quit.png'), '&Quit', self) self.connect(quitAction,signal("triggered()"),QtGui.qApp.quit) backAction = QtGui.QAction( '&Back', self) self.connect(backAction,signal("triggered()"),self.backClicked) self.popMenu= QtGui.QMenu() self.popMenu.addAction(quitAction) self.popMenu.addAction(backAction) def resizeEvent(self, e): self.handChange() def backClicked(self): if self.trans == True : self.trans = False self.set_transparency(False) else: self.trans = True self.set_transparency(True) def mouseReleaseEvent(self,e): if self.rightButton == True: self.rightButton=False self.popMenu.popup(e.globalPos()) def mouseMoveEvent(self, e): if e.buttons() & Qt.LeftButton: self.move(e.globalPos()-self.dragPos) e.accept() def mousePressEvent(self, e): if e.button() == Qt.LeftButton: self.dragPos=e.globalPos()-self.frameGeometry().topLeft() e.accept() if e.button() == Qt.RightButton and self.rightButton == False: self.rightButton=True def paintEvent(self, e): time = QTime.currentTime() qp = QPainter() qp.begin(self) #qp.setRenderHint(QPainter.Antialiasing) # 开启这个抗锯齿,会很占cpu的! qp.translate(self.width() / 2, self.height() / 2) qp.scale(self.side / 200.0, self.side / 200.0) qp.setPen(QtCore.Qt.NoPen) qp.setBrush(self.hourColor) qp.save() qp.rotate(30.0 * ((time.hour() + time.minute()/ 60.0))) qp.drawConvexPolygon(self.hourHand) qp.restore() qp.setPen(self.hourColor) for i in range(12): qp.drawLine(88, 0, 96, 0) qp.rotate(30.0) qp.setPen(QtCore.Qt.NoPen) qp.setBrush(self.minuteColor2000) qp.save() qp.rotate(6.0 * ((time.minute() + (time.second()+time.msec()/1000.0) / 60.0))) qp.drawConvexPolygon(self.minuteHand) qp.restore() qp.setPen(self.minuteColor) for i in range(60): if (i % 5) is not 0: qp.drawLine(92, 0, 96, 0) qp.rotate(6.0) qp.setPen(QtCore.Qt.NoPen) qp.setBrush(self.secondColor) qp.save() qp.rotate(6.0*(time.second()+time.msec()/1000.0)) qp.drawConvexPolygon(self.secondHand) qp.restore() qp.end() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) clock = Clock() sys.exit(app.exec_())#www.iplaypy.com
编橙之家文章,
相关内容
- Access密码识别工具py2.7+PyQt实现方法,py2.7pyqt,这是一段
- Python如何使用进程名获取PID方法示例,pythonpid,Python如何
- 练手python远程自由管控小程序,练手python管控,为了让自
- Python自动登录猫扑完成打卡操作示例,python自动登录
- web表单提交GET和POST方法示例,web表单getpost,需要了解,
- 批量调整图片尺寸的python脚本,,图片尺寸太大,数量太
- Python 3模拟生日概率问题源码,python源码,Python 3模拟生
- pyhooks方法实现键盘监控源码示例,pyhooks源码,pyhooks方法
- Gmail邮件发送Python小脚本,gmail邮件发送python,之前有分
- OpenSSL完成RSA加密的python方法示例,opensslrsa,以下Python代
评论关闭