首页 > 编程 > Python > 正文

python+PyQT实现系统桌面时钟

2020-02-15 23:42:48
字体:
来源:转载
供稿:网友

用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_( ))             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表