PyQt5实现透明电子时钟
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
class LcdTime(QtWidgets.QFrame):
def __init__(self, parent=None):
super(LcdTime, self).__init__(parent)
self.hour = QtWidgets.QLCDNumber(8, self)
self.hour.setGeometry(10, 10, 200, 70)
self.hour.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
self.display()
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.display)
#self.connect(self.timer, QtCore.SIGNAL('timeout()'), self.display)
self.timer.start(1000)
self.build_tray()
self.resize(220, 100)
self.central()
# 边框透明
self.hour.setFrameShape(QtWidgets.QFrame.NoFrame)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.SubWindow | QtCore.Qt.WindowStaysOnTopHint)
# 透明处理,移动需要拖动数字
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
self.setMouseTracking(True)
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
event.accept()
def mouseMoveEvent(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(event.globalPos() - self.dragPosition)
event.accept()
def build_tray(self):
self.trayIcon = QtWidgets.QSystemTrayIcon(self)
self.trayIcon.setIcon(QtGui.QIcon('resource/logo.png'))
self.trayIcon.show()
self.trayIcon.setToolTip('时钟 -LiKui')
self.trayIcon.activated.connect(self.trayClick)
menu = QtWidgets.QMenu()
normalAction = menu.addAction('正常显示')
miniAction = menu.addAction('最小化托盘')
exitAction = menu.addAction('退出')
normalAction.triggered.connect(self.showNormal)
exitAction.triggered.connect(self.exit)
miniAction.triggered.connect(self.showMinimized)
self.trayIcon.setContextMenu(menu)
def exit(self):
# 不设置Visible为False,退出后TrayIcon不会刷新
self.trayIcon.setVisible(False)
sys.exit(0)
def trayClick(self, reason):
if reason == QtWidgets.QSystemTrayIcon.DoubleClick:
self.showNormal()
self.repaint()
def display(self):
current = QtCore.QTime.currentTime()
self.hour.display(current.toString('HH:mm:ss'))
def showNormal(self):
super(LcdTime, self).showNormal()
self.repaint()
def central(self):
screen = QtWidgets.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move(screen.width() - size.width(), 0)
app = QtWidgets.QApplication(sys.argv)
lcd = LcdTime()
lcd.show()
sys.exit(app.exec_())
PyQt5实现透明电子时钟的更多相关文章
- PyQt5用QTimer编写电子时钟
[说明] 本文用 PyQt5 的QTimer类的两种方式实现电子时钟 [效果图] [知识点] QTimer类提供了定时器信号/槽和单触发定时器. 它在内部使用定时器事件来提供更通用的定时器. QTim ...
- 公开课 之 tony 电子时钟 (课堂笔记)
# tony 之电子时钟from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QDesktopWidget, QVBoxLayo ...
- JavaScript电子时钟+倒计时
JavaScript时间类 获取时分秒: getHours() getMinutes(); getSeconds(); 获取 ...
- JS实现电子时钟
目前有个小项目,在首页头部导航栏里需要一个电子时钟的效果,于是我就采用如下代码实现了一个电子时钟的效果.不过不完美,第一种方式容易导致网页莫名其妙的异常,后来觉得可能是做的操作太多了,然后 ...
- 桌面小部件----LED电子时钟实现
桌面控件是通过 Broadcast 的形式来进行控制的,因此每个桌面控件都对应于一个BroadcastReceiver.为了简化桌面控件的开发,Android 系统提供了一个 AppWidgetPro ...
- Qt - 与众不同的电子时钟
Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控 ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- 3分钟利用TurnipBit制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 TurnipBit(www.turnipbit.com)是一个面向青少年的开发板 ...
- Micropython TurnipBit 电子时钟 青少年编程入门
电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了.TurnipBit相比于其他开发板,制作电子时钟就更加简 ...
随机推荐
- 关于Docker中的Images与Containers
Docker engine提供了启动Images和containers核心的技术的支持.当你运行docker run hello-world 命令时,实际上可分为三个部分: 告诉你操作系统你正在使用的 ...
- 关于使用JQuery追加Option标签时使用三元运算符添加选中属性的解决办法
$(data.resultList).each(function () { var selectedFlag = ${sessionScope.userI ...
- Maven常用的几个核心概念
在使用Maven的过程中,经常会遇到几个核心的概念,准确的理解这些概念将会有莫大的帮助. 1. POM(Project Object Model)项目对象模型 POM 与 Java 代码实现了解耦,当 ...
- Android学习笔记-Button(按钮)
Button是TextView的子类,所以TextView上很多属性也可以应用到Button 上!我们实际开发中对于Button的,无非是对按钮的几个状态做相应的操作,比如:按钮按下的时候 用一种颜色 ...
- Spring核心--IOC
先说说Spring框架 Spring框架 Spring框架的作用 Spring 的核心(IOC功能) SpringAOP功能 原有的业务流程:请求->servlet-->service-- ...
- 使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- java8之lambda表达式(1)-基本语法
lambda表达式,即带有参数的表达式,为更清晰地理解lambda表达式,先看如下例子: (1) class Student{ private String name; private Double ...
- 【head first python】学习计划
1 初识Python:人人都爱列表 2 共享你的代码:函数模块 3 文件与异常:处理错误 4 持久存储:数据保存到文件 5 推导数据:处理数据! 6 定制数据对象:打包代码与数据 7 Web开发:集成 ...
- Mybatis Dynamic Query 2.0 入门
简介 2.0 昨天打包好了,主要是整合了tk.mybatis.mapper 到项目中去,所以和1.x比起来主要多了一个通用mapper.因为作者主要是使用springboot 这里讲一下Springb ...
- 【有意思的BUG】视频连接超时
最近遇到了一个BUG,但是它的出现又存在概率,所以挺有意思的. BUG的现象是:视频在播放过程中(已播放进度<已加载进度),首先出现了缓冲的动画效果其次呈现雪花背景并且抛出异常"视频连 ...