侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python+PyQT实现系统桌面时钟

Python  /  管理员 发布于 7年前   175

用Python + PyQT写的一个系统桌面时钟,刚学习Python,写的比较简陋,但是基本的功能还可以。

功能:

①窗体在应用程序最上层,不用但是打开其他应用后看不到时间

②左键双击全屏,可以做小屏保使用,再次双击退出全屏。

③系统托盘图标,主要参考PyQt4源码目录中的PyQt4\examples\desktop\systray下的程序

④鼠标右键,将程序最小化

使用时需要heart.svg放在源代码同级目录下,[文件可在PyQt4示例代码目录下PyQt4\examples\desktop\systray\images找到

运行需要Python2.7 + PyQt4.

__metaclass__ = type #!coding= utf-8 #http://blog.csdn.net/gatieme/article/details/17659259 #gatieme   import sys from PyQt4.QtCore import * from PyQt4.QtGui import *   #-------------------------------------------------------------------------------- class SystemTrayIcon(QSystemTrayIcon):   """   The systemTrayIcon which uesd to connect the clock   """   #----------------------------------------------------------------------------   def __init__(self, mainWindow, parent = None):     """     mainWindow : the main window that the system tray icon serves to     """       super(SystemTrayIcon, self).__init__(parent)     self.window = mainWindow     self.setIcon(QIcon("heart.svg"))  # set the icon of the systemTrayIcon          self.createActions( )     self.createTrayMenu( )          self.connect(self, SIGNAL("doubleClicked"), self.window, SLOT("showNormal"))     #self.connect(self, SIGNAL("activated( )"), self, SLOT("slot_iconActivated"))         def createActions(self):     """     create some action to Max Min Normal show the window     """     self.minimizeAction = QAction("Mi&nimize", self.window, triggered = self.window.hide)     self.maximizeAction = QAction("Ma&ximize", self.window, triggered = self.window.showMaximized)     self.restoreAction = QAction("&Restore", self.window, triggered = self.window.showNormal)     self.quitAction = QAction("&Quit", self.window, triggered = qApp.quit) def createTrayMenu(self):      self.trayIconMenu = QMenu(self.window)      self.trayIconMenu.addAction(self.minimizeAction)      self.trayIconMenu.addAction(self.maximizeAction)      self.trayIconMenu.addAction(self.restoreAction)      self.trayIconMenu.addSeparator( )      self.trayIconMenu.addAction(self.quitAction)       self.setContextMenu(self.trayIconMenu)      def setVisible(self, visible):     self.minimizeAction.setEnabled(not visible)     self.maximizeAction.setEnabled(not self.window.isMaximized())     self.restoreAction.setEnabled(self.window.isMaximized() or not visible)     super(Window, self).setVisible(visible)      def closeEvent(self, event):     #if event.button( ) == Qt.RightButton:     self.showMessage("Message",         "The program will keep running in the system tray. To "         "terminate the program, choose <b>Quit</b> in the "         "context menu of the system tray entry.",          QSystemTrayIcon.Information, 5000)     self.window.hide( )     event.ignore( )    def slot_iconActivated(self, reason):     if reason == QSystemTrayIcon.DoubleClick:       self.wiondow.showNormal( )    #-------------------------------------------------------------------------------- class DigitClock(QLCDNumber):   """   the DigitClock show a digit clock int the printer   """      #----------------------------------------------------------------------------   def __init__(self, parent = None):     """     the constructor function of the DigitClock     """     super(DigitClock, self).__init__(parent)     pale = self.palette( )      pale.setColor(QPalette.Window, QColor(100, 180, 100))     self.setPalette(pale)          self.setNumDigits(19)     self.systemTrayIcon = SystemTrayIcon(mainWindow = self)           self.dragPosition = None;     self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Popup | Qt.Tool)     self.setWindowOpacity(1)          self.showTime( )      # print the time when the clock show     self.systemTrayIcon.show( ) # show the SystemTaryIcon when the clock show       self.timer = QTimer( )     self.connect(self.timer, SIGNAL("timeout( )"), self.showTime)     self.timer.start(1000)          self.resize(500, 60)           #----------------------------------------------------------------------------   def showTime(self):     """     show the current time     """     self.date = QDate.currentDate( )     self.time = QTime.currentTime( )     text = self.date.toString("yyyy-MM-dd") + " " + self.time.toString("hh:mm:ss")     self.display(text)          #----------------------------------------------------------------------------   def mousePressEvent(self, event):     """     clicked the left mouse to move the clock     clicked the right mouse to hide the clock     """     if event.button( ) == Qt.LeftButton:       self.dragPosition = event.globalPos( ) - self.frameGeometry( ).topLeft( )       event.accept( )     elif event.button( ) == Qt.RightButton:       self.systemTrayIcon.closeEvent(event)        #self.systemTrayIcon.hide( )       #self.close( )    def mouseMoveEvent(self, event):     """     """     if event.buttons( ) & Qt.LeftButton:       self.move(event.globalPos( ) - self.dragPosition)       event.accept( )      def keyPressEvent(self, event):     """     you can enter "ESC" to normal show the window, when the clock is Maxmize     """     if event.key() == Qt.Key_Escape and self.isMaximized( ):       self.showNormal( )    def mouseDoubleClickEvent(self, event):     """     """     if event.buttons() == Qt.LeftButton:       if self.isMaximized( ):         self.showNormal( )       else:         self.showMaximized( )    if __name__ == "__main__":   app = QApplication(sys.argv)      digitClock = DigitClock( )   digitClock.show( )        sys.exit(app.exec_( )) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    python使用Turtle库绘制动态钟表
    下一条:
    Python中安装easy_install的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客