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相比于其他开发板,制作电子时钟就更加简 ...
随机推荐
- fzu 2257 saya的小熊饼干
https://vjudge.net/problem/FZU-2257 题意:略 思路: 看题解补的题.正难则反的思想求概率. 首先,由于各维数之间是独立的.所以以x为例.首先,计算可以取到(i,j) ...
- 【SignalR学习系列】3. SignalR实时高刷新率程序
创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 创建基 ...
- 存储结构比较vector,list,dequeue,stack(转)
vector适用:对象数量变化少,简单对象,随机访问元素频繁list适用:对象数量变化大,对象复杂,插入和删除频繁最大的区别是,list是双向的,而vector是单向的.因此在实际使用时,如何 ...
- js中常用的日期总结
js开发中经常用到日期,这里总结一下: /** * 获取当前日期 * 格式:2017-07-31 13:45:14 */ function getNowFormatDate() { var date ...
- MySQL Database Command Line Client
.输入密码:****** 1.1.create datatable Name;创建数据库 1.2.source D://taotao.sql; source后面加sql文件是批量导入sql语句 .ue ...
- 一张图告诉你最流行的 7 个 JavaScript框架特点
欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ AngularJ.js 由g ...
- 表达式求值(二叉树方法/C++语言描述)(四)
代码清单 // binarytree.h #ifndef BINARYTREE_H #define BINARYTREE_H template <typename T> class Bin ...
- 简单探讨python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句 ...
- 13. Roman to Integer【leetcode】
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- Apache Kafka系列(一)
摘要: 1.Apache Kafka基本概念 2.Kafka的安装 3.基本工具创建Topic 本文基于centos7, Apache Kafka 0.11.0 一.基本概念 Apache Kafka ...