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相比于其他开发板,制作电子时钟就更加简 ...
随机推荐
- 用Python识别网站使用的技术
在进行爬虫之前,一般我们都会对要爬取的网站进行识别,识别我们要爬取的网站所使用到的技术,这样才能更有利于我们爬虫工作的进行.所以在此介绍以下如何用Python去识别一个网站所使用到的技术. 环境:Py ...
- salesforce零基础学习(七十六)顺序栈的实现以及应用
数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...
- FaceRank-项目上了 GitHub Python Trending
FaceRank-人脸打分基于 TensorFlow 的 CNN 模型 GitHub Python Trending 第一次上 trending ,虽然只是分类榜. https://github.co ...
- ajax-jquery方法-初步入门01(整理)
-----------------------------------2017.07.21写----------------------------------------- 相比较原生javascr ...
- 使用CHCA搭建静态博客
[toc] chca是一个使用golang开发的静态博客生成器,简单.方便.快捷,抛弃每次都需要使用命令编译文件,采用文件监听方式编译,作者只需把markdown文件放到配置中的markdown文件夹 ...
- git入门(3)git checkout 和git branch分支的创建和删除
在一个项目中,需要多人同时开发,协同coding 要求: 开发时请用开发分支daily/0.0.1, 禁止直接使用master分支开发新建分支 git checkout -b daily/0.0.1 ...
- discuz相关总结
1.dz的下载安装 进入discuz官方网站下载discuz安装包:拷贝出其中的upload目录,重命名为discuz,将discuz目录上传至linux公网服务器: 配置web服务器,nginx或者 ...
- swift3.0 UITableView侧滑支持多选项
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableVie ...
- Eclipse中tomcat配置
配置这两个东西 tomcat,在eclipse中启动 tomcat 才会可以访问 来自为知笔记(Wiz)
- 命令控制台与java环境配置
1. 命令控制台 1) Linux / Unix 命令格式 command [-选项...] [参数...] 如: ls -a ~ mkdir .demo //创建隐藏目录 ...