Python实现系统桌面时钟

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

功能:

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

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

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

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

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

运行需要Python2.7 + PyQt4.

[python] view plain copy print?

  1. __metaclass__ = type  
  2. #!coding= utf-8  
  3. #http://blog.csdn.net/gatieme/article/details/17659259  
  4. #gatieme  
  5.   
  6.   
  7. import sys  
  8. from PyQt4.QtCore import *  
  9. from PyQt4.QtGui import *  
  10.   
  11.   
  12. #--------------------------------------------------------------------------------  
  13. class SystemTrayIcon(QSystemTrayIcon):  
  14.     """ 
  15.     The systemTrayIcon which uesd to connect the clock 
  16.     """  
  17.     #----------------------------------------------------------------------------  
  18.     def __init__(self, mainWindow, parent = None):  
  19.         """ 
  20.         mainWindow : the main window that the system tray icon serves to 
  21.         """      
  22.         super(SystemTrayIcon, self).__init__(parent)  
  23.         self.window = mainWindow  
  24.         self.setIcon(QIcon("heart.svg"))   # set the icon of the systemTrayIcon  
  25.           
  26.         self.createActions( )  
  27.         self.createTrayMenu( )  
  28.           
  29.         self.connect(self, SIGNAL("doubleClicked"), self.window, SLOT("showNormal"))  
  30.         #self.connect(self, SIGNAL("activated( )"), self, SLOT("slot_iconActivated"))  
  31.           
  32.   
  33.     def createActions(self):  
  34.         """ 
  35.         create some action to Max Min Normal show the window 
  36.         """  
  37.         self.minimizeAction = QAction("Mi&nimize", self.window, triggered = self.window.hide)  
  38.         self.maximizeAction = QAction("Ma&ximize", self.window, triggered = self.window.showMaximized)  
  39.         self.restoreAction = QAction("&Restore", self.window, triggered = self.window.showNormal)  
  40.         self.quitAction = QAction("&Quit", self.window, triggered = qApp.quit)  
  41.                   
  42.   
  43.     def createTrayMenu(self):  
  44.          self.trayIconMenu = QMenu(self.window)  
  45.          self.trayIconMenu.addAction(self.minimizeAction)  
  46.          self.trayIconMenu.addAction(self.maximizeAction)  
  47.          self.trayIconMenu.addAction(self.restoreAction)  
  48.          self.trayIconMenu.addSeparator( )  
  49.          self.trayIconMenu.addAction(self.quitAction)  
  50.   
  51.          self.setContextMenu(self.trayIconMenu)  
  52.       
  53.     def setVisible(self, visible):  
  54.         self.minimizeAction.setEnabled(not visible)  
  55.         self.maximizeAction.setEnabled(not self.window.isMaximized())  
  56.         self.restoreAction.setEnabled(self.window.isMaximized() or not visible)  
  57.         super(Window, self).setVisible(visible)  
  58.   
  59.   
  60.   
  61.     def closeEvent(self, event):  
  62.         #if event.button( ) == Qt.RightButton:  
  63.         self.showMessage("Message",  
  64.                 "The program will keep running in the system tray. To "  
  65.                 "terminate the program, choose <b>Quit</b> in the "  
  66.                 "context menu of the system tray entry.",   
  67.                 QSystemTrayIcon.Information, 5000)  
  68.         self.window.hide( )  
  69.         event.ignore( )  
  70.   
  71.     def slot_iconActivated(self, reason):  
  72.         if reason == QSystemTrayIcon.DoubleClick:  
  73.             self.wiondow.showNormal( )  
  74.   
  75.   
  76.   
  77. #--------------------------------------------------------------------------------  
  78. class DigitClock(QLCDNumber):  
  79.     """ 
  80.     the DigitClock show a digit clock int the printer 
  81.     """  
  82.       
  83.     #----------------------------------------------------------------------------  
  84.     def __init__(self, parent = None):  
  85.         """ 
  86.         the constructor function of the DigitClock 
  87.         """  
  88.         super(DigitClock, self).__init__(parent)  
  89.         pale = self.palette( )  
  90.   
  91.         pale.setColor(QPalette.Window, QColor(100, 180, 100))  
  92.         self.setPalette(pale)  
  93.           
  94.         self.setNumDigits(19)  
  95.         self.systemTrayIcon = SystemTrayIcon(mainWindow = self)  
  96.   
  97.           
  98.         self.dragPosition = None;  
  99.         self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Popup | Qt.Tool)  
  100.         self.setWindowOpacity(1)  
  101.           
  102.         self.showTime( )            # print the time when the clock show  
  103.         self.systemTrayIcon.show( ) # show the SystemTaryIcon when the clock show   
  104.   
  105.         self.timer = QTimer( )  
  106.         self.connect(self.timer, SIGNAL("timeout( )"), self.showTime)  
  107.         self.timer.start(1000)  
  108.           
  109.         self.resize(500, 60)  
  110.           
  111.       
  112.     #----------------------------------------------------------------------------  
  113.     def showTime(self):  
  114.         """ 
  115.         show the current time  
  116.         """  
  117.         self.date = QDate.currentDate( )  
  118.         self.time = QTime.currentTime( )  
  119.         text = self.date.toString("yyyy-MM-dd") + " " + self.time.toString("hh:mm:ss")  
  120.         self.display(text)  
  121.   
  122.           
  123.   
  124.     #----------------------------------------------------------------------------  
  125.     def mousePressEvent(self, event):  
  126.         """ 
  127.         clicked the left mouse to move the clock 
  128.         clicked the right mouse to hide the clock 
  129.         """  
  130.         if event.button( ) == Qt.LeftButton:  
  131.             self.dragPosition = event.globalPos( ) - self.frameGeometry( ).topLeft( )  
  132.             event.accept( )  
  133.         elif event.button( ) == Qt.RightButton:  
  134.             self.systemTrayIcon.closeEvent(event)  
  135.   
  136.             #self.systemTrayIcon.hide( )  
  137.             #self.close( )  
  138.   
  139.     def mouseMoveEvent(self, event):  
  140.         """ 
  141.         """  
  142.         if event.buttons( ) & Qt.LeftButton:  
  143.             self.move(event.globalPos( ) - self.dragPosition)  
  144.             event.accept( )  
  145.       
  146.     def keyPressEvent(self, event):  
  147.         """ 
  148.         you can enter "ESC" to normal show the window, when the clock is Maxmize 
  149.         """  
  150.         if event.key() == Qt.Key_Escape and self.isMaximized( ):  
  151.             self.showNormal( )  
  152.   
  153.     def mouseDoubleClickEvent(self, event):  
  154.         """ 
  155.         """  
  156.         if event.buttons() == Qt.LeftButton:  
  157.             if self.isMaximized( ):  
  158.                 self.showNormal( )  
  159.             else:  
  160.                 self.showMaximized( )  
  161.       
  162. if __name__ == "__main__":  
  163.     app = QApplication(sys.argv)  
  164.       
  165.     digitClock = DigitClock( )  
  166.     digitClock.show( )      
  167.       
  168.     sys.exit(app.exec_( ))  
  169.       

转载:http://blog.csdn.net/gatieme/article/details/17659259

时间: 2024-10-20 07:54:09

Python实现系统桌面时钟的相关文章

win7系统桌面小工具无法显示的解决方法

  win7系统里有自带有小工具,包括:CPU仪表盘.幻灯片放映.货币.日历.时钟.天气.图片拼图版.源标题.这些小工具看似没有用处,但是他们也起着小小的作用,他可以在出行时告诉你货币兑换比例,而且很容易找到,方便用户利用.而且还能自己添加新的小工具项.有这样需求的用户经常将其放在桌面上,但是桌面上却无法正常显示出来,新添加的小工具也无法显示,虽然还是可以右击鼠标轻松找到它,但是这也算是一个"怪事".所以,一起和小编把这些小工具找回到桌面上吧! 1.首先从开始里面打开控制面板属性窗口,

如何添加win7系统桌面小工具

       如何添加win7系统桌面小工具 1.先用鼠标右键点击电脑桌面,则会出现一个菜单对话框.如图所示 2.单击菜单中倒数第二个选项,即"小工具"选项,如图所示 3.桌面会弹出一个新对话框窗口,上面有一些实用的小工具供你选择.如图所示 4.你可以选择一些实用的,比如时钟和日历,双击它们的图标,如图所示 5.这样,你给桌面添加小工具的设置操作就完成了,你会在桌面右上角看到你新添加的日历和时钟的图标,看起时间和日期来还是很方便的.          更多知识欢迎关注三联windows

win7系统桌面所有文件都无法重命名提示“目标文件夹访问被拒绝”如何解决

  win7系统桌面所有文件都无法重命名提示"目标文件夹访问被拒绝"如何解决 具体步骤: 1.打开"计算机",定位到C:UsersAdministratorDesktop ; 2.在空白处单击右键,选择"属性"; 3.在"安全"标签中点击"编辑"按钮; 4.选择你登录的帐户名如:Administrator,将"用户名"权限设置"完全控制"后面的"允许&quo

Win7系统桌面图标多出一个盾牌标志怎么办

  Win7系统桌面图标多出一个盾牌标志怎么办           具体方法如下: 1.首先右键"计算机"点"管理",选中"本地用户和组",再点"用户"; 2.然后双击列表里的Administrator,把"账户已禁用"前面的勾取消掉; 3.然后点开开始菜单里的"文档"上面的那个个人文件夹,把里面的所有文件保存一下;然后把桌面上一些比较重要的文件或者文件夹也保存到别的盘里; 4.然后在关

关闭Win7系统桌面图标阴影效果方法

win7系统中,通过各种优化后会发现win7桌面图标突然出现阴影现象,这对操作倒是没什么影响,但是对视觉上,心理上感觉都是那么的不和谐,要怎么才能去掉图标上的阴影呢?去掉阴影会是个难事吗?一起来看一下吧. 步骤一:首先在桌面"计算机"图标上右键点击,选择"属性". 步骤二:然后,在弹出的属性对话框中选择"高级系统设置". 步骤三:在系统属性窗口中,选择"高级"选项卡,其实在上一步已经选择了"高级"选项卡了,

win7系统桌面图标怎么摆放

  win7系统桌面图标怎么摆放 1.在桌面空白位置,点击鼠标右键--然后选择个性化; 2.在弹出的窗口中选择"更改桌面图标",点击进入桌面图标设置; 3.进入桌面图标设置窗口:将计算机.回收站.网络前面的方框,鼠标左键单击,方框出现一个对号,表示已经选定点击确定就可以了; 4.这时桌面上就不是只有一个回收站了,还有其他的图标了哦,还是在桌面的空白位置,点击鼠标右键--查看--将"自动排列图标"前面的对号点掉,这样你就可以随意移动桌面所有的图标了; 5.看看这是我随

Win7系统桌面图标有蓝色问号怎么解决?

  Win7系统桌面图标有蓝色问号怎么解决? 1.打开"计算机",点击"组织"选择"文件夹和搜索选项"; 2.在"文件夹选项"的"查看"选卡中"高级设置"下方框中点击"显示隐藏的文件.文件夹和驱动器",然后将"隐藏受保护的操作系统文件(推荐)"前面的勾去掉,点击应用并确定即可; 3.切换到桌面,我们可以看到一个名为".svn"的

win7系统桌面图标变成Windows播放器怎么解决?

  win7系统桌面图标变成Windows播放器怎么解决? 1.点击开始菜单,打开"运行",在框中输入"regedit"按下回车键打开"注册表编辑器"; 2.在树状菜单中依次展开:HKEY_CURRENT_USERSOFTWAREMICROSOFTWINDOWScurrentversionExplorerFileExts.lnk ; 3.展开".ink",在下面保留"openwithlist "和"

XP系统桌面右下角通知栏显示无线连接图标

  具体的操作步骤如下: 首先在Windows XP系统桌面上右键单击"网上邻居"图标,选择"属性"菜单命令. 然后在打开的"网络连接"窗口中右键单击"无线网络连接"图标,选择"属性"命令. 接着打开"无线网络连接 属性"对话框,选中"连接后在通知区域显示图标"复选框,并单击"确定"按钮. 通过系统大全分享的无线网络图标显示设置,用户即可在Wind