用PyQt实现透明桌面时钟小部件

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2012-4-6@author: wangxiao
'''
import sys
from PyQt4 import  QtGui, QtCore  
from PyQt4.QtCore import Qt
from PyQt4.QtCore import QPoint
from PyQt4.QtCore import QTimer
from PyQt4.QtCore import QTime 
from PyQt4.QtGui import QPainter
from PyQt4.QtGui import QColor 
from PyQt4.QtGui import QPolygon
from PyQt4.QtCore import SIGNAL as signal
class 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 = Trueself.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 = Trueself.set_transparency(True)def mouseReleaseEvent(self, e): if self.rightButton == True:self.rightButton = Falseself.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 = Truedef 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.minuteColor)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_())


转载于:https://my.oschina.net/yzbty32/blog/475727

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现织梦dedecms百度主动推送(实时)网页抓取

做百度推广的时候,如何让百度快速收录呢,下面提供了三种方式,今天我们主要讲的是第一种。 如何选择链接提交方式 1、主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保…

高性能CSS(一)

避免使用import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入import。而在外部的CSS文件中使用import会使得页面在加载时增加额外的延迟。虽然规则允许在样式中调用import来导入其它的CSS,但浏览器不能并行下载样式&#xff0…

【RK3399Pro学习笔记】十八、点亮LED灯(python、C语言、bash)

目录GPIOpython3python-peripherypython2RPiC语言SysFs方式编写gpiolib.cgpiolib.hmain.c编译测试wiringPibash平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 GPIO (机翻)下表显示了座子的引脚&am…

Jquery - 添加属性、添加class、添加Css

Jquery - 添加属性、添加class、添加Css 一.设置属性: 方式一 jQuery 代码: $("img").attr({ src: "test.jpg", alt: "Test Image" } 方式二:jQuery代码--键值对 $("img").attr("src","te…

PHP笔记——java程序员看懂PHP程序

PHP笔记——java程序员看懂PHP程序 php是一种服务器端脚本语言&#xff0c;类型松散的语言。<?php ?> xml风格<script language”php”></script> 脚本风格 <? ?> 简短风格 <% %> ASP风格 以;结尾&#…

C# mysql 插入数据,中文乱码

用C#操作mysql时&#xff0c; 插入数据中文都是乱码&#xff0c;只显示问号&#xff0c;数据库本身使用的是utf-8字符。网上百度一下有两种解决办法&#xff1a; 一种是在执行语句前面设置&#xff0c;如&#xff1a;MySQLCommand mCommand new MySQLCommand("set names …

C# list与数组互相转换

1. 从System.String[]转到List<System.String>System.String[] str{"str","string","abc"};List<System.String> listSnew List<System.String>(str);2. 从List<System.String>转到System.String[]List<System.Strin…

Linux中python、C++和C语言的多线程用法整理(_thread、threading、thread和pthread)

目录python3开始学习Python线程_thread常量和函数&#xff1a;锁对象试用基本功能试用线程同步threading函数常量类线程本地数据线程对象锁对象递归锁对象条件对象信号量对象Semaphore 例子事件对象定时器对象栅栏对象在 with 语句中使用锁、条件和信号量测试Cstd::threadstd::…

[原]关于在 iOS 中支持 DLNA

目前国内的视频播放器中&#xff0c;支持 DLNA 播放比较好的是&#xff1a;腾讯视频。 刚才反编了一下他们的代码&#xff0c;发现使用了一个开源库&#xff0c; 地址&#xff1a;https://github.com/FuruyamaTakeshi/DLNA 并且在这个库的基础了做了一层封装&#xff0c;包含如…

Swing-BoxLayout用法-入门

注&#xff1a;本文内容源于http://www.java3z.com/cwbwebhome/article/article20/200016.html?id4797&#xff1b;细节内容根据笔者理解有修改。 BoxLayout 可以把控件依次进行水平或者垂直排列布局&#xff0c;这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列&a…

Python开发利器之UliPad

一、安装Ulipad 因为ulipad编辑器使用的是wxpython编写的gui&#xff0c;所以我们需要第三方库wxpython的支持&#xff0c;先讲一下Ulipad在Windows系统环境下的安装&#xff1a; 1. 确实自己的windows版本&#xff0c;32位还是64位的。2. 查看自己安装的 Python版本&#xff0…

网页中如何使用一些特殊字体

虽然我们可以通过图片&#xff0c;flash、SIFR等技术来实现网页使用特殊字体&#xff0c;有利于SEO网页中嵌入特殊字体方法&#xff0c;font-face属性。 通常网页上不能使用一些特殊字体&#xff0c;否则浏览者可能无法正确浏览到&#xff0c;虽然我们可以通过图片&#xff0c…

Google浏览器中的开发工具.

惯例 我是温浩然: google浏览器&#xff0c;按下F12后&#xff0c;出现开发控制台。 下面有这么几栏&#xff0c;elements,network,sources,timeline ,profiles,resources,audits ,console. elements&#xff0c;是页面源码&#xff0c;network&#xff0c;是看请求的&#xff…

【思考】一次交付项目小结

【背景】 公司销售谈了一个重要的项目&#xff0c;与我们正在研发的一个产品关系比较大&#xff0c;可惜前期由于种种原因&#xff0c;耽搁了很长时间&#xff0c;等到我们研发部门知道消息的时候&#xff0c;已经很晚了。9月中旬启动&#xff0c;11月下旬要求上线&#xff0c;…

flask接收前台的form数据

html 记得访问从服务里打开 表单html 不能直接打开表单html https://www.cnblogs.com/wanghaonull/p/6340096.html

【bzoj4399】魔法少女LJJ 并查集+权值线段树合并

题目描述 在森林中见过会动的树&#xff0c;在沙漠中见过会动的仙人掌过后&#xff0c;魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新、淡雅,到处散发着醉人的奶浆味&#xff1b;小猴在枝头悠来荡去,好不自在&#xf…

树莓派Raspbian Buster/Debian 10 安装ROS

目录一些补充安装ROS初始化rosdep测试平台&#xff1a;树莓派4B 系统版本&#xff1a; 2020-05-27-raspios-buster-arm64.img 一些补充 系统安装参考 【树莓派学习笔记】一、烧录系统、(无屏幕)配置Wifi和SSH服务 【树莓派学习笔记】二、(无屏幕)SSH远程登录、图形界面及系统…

pjsip视频通信开发(上层应用)之EditText重写

我们经常使用手机的打电话功能&#xff0c;当我们按键盘的时候&#xff0c;有一个地方显示我们按键的内容&#xff0c;当我们的手点击那个地方的时候&#xff0c;并没有弹出软件盘&#xff0c;所以我们再有数字键盘的时候&#xff0c;要屏蔽系统的软件盘。 我们分析一下&#x…

JavaWeb重要知识点总结

JavaWeb学习篇之----容器Response详解http://blog.csdn.net/jiangwei0910410003/article/details/22886847获得所有请求头名称和头信息java.util.Enumeration names request.getHeaderNames();System.out.println("");while(names.hasMoreElements()){String name …

pycharm 中HTML代码的对齐

以前用sublime &#xff0c;现在django要在pycharm编辑html&#xff0c;要实现html的格式化&#xff0c; 用快捷键 CtrlAltL 非常实用