alarm.py

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· Python 代码 · 共 164 行

PY
164
字号
#!/usr/bin/env python############################################################################# Config dialog for alarm script# (c) 2005 Mark Kretschmann <markey@web.de>## Depends on: Python 2.2, PyQt############################################################################## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.#############################################################################from ConfigParser import *import Queueimport os.pathimport sysimport threadingfrom os import *try:    from qt import *except:    popen( "kdialog --sorry 'PyQt (Qt bindings for Python) is required for this script.'" )    raiseclass ConfigDialog( QDialog ):    def __init__( self ):        QDialog.__init__( self )        self.setWFlags( Qt.WDestructiveClose )        self.setCaption( "Alarm Script - Amarok" )        self.lay = QHBoxLayout( self )        self.vbox = QVBox( self )        self.lay.addWidget( self.vbox )        self.htopbox = QHBox( self.vbox )        QLabel( "Alarm time: ", self.htopbox )        self.timeEdit = QTimeEdit( self.htopbox )        self.hbox = QHBox( self.vbox )        self.ok = QPushButton( self.hbox )        self.ok.setText( "Ok" )        self.cancel = QPushButton( self.hbox )        self.cancel.setText( "Cancel" )        self.cancel.setDefault( True )        self.connect( self.ok,     SIGNAL( "clicked()" ), self.save )        self.connect( self.cancel, SIGNAL( "clicked()" ), self, SLOT( "reject()" ) )        self.adjustSize()    def __del__( self ):        print "ConfigDialog dtor"    def save( self ):        wakeTime = str( self.timeEdit.time().toString() )        print wakeTime        self.file = file( "alarmrc", 'w' )        self.config = ConfigParser()        self.config.add_section( "General" )        self.config.set( "General", "alarmtime", wakeTime)        self.config.write( self.file )        self.file.close()        self.accept()class Alarm( QApplication ):    def __init__( self, args ):        QApplication.__init__( self, args )        self.queue = Queue.Queue()        self.startTimer( 100 )        self.t = threading.Thread( target = self.readStdin )        self.t.start()        self.alarmTimer = QTimer()        self.connect( self.alarmTimer, SIGNAL( "timeout()" ), self.wakeup )        self.readSettings()    def __del__( self ):        print "Alarm dtor"    def wakeup( self ):        popen( "dcop amarok player play" )        self.quit()    def readSettings( self ):        config = ConfigParser()        config.read( "alarmrc" )        try:            timestr = config.get( "General", "alarmtime" )            print "Alarm Time: " + timestr            time = QTime.fromString( timestr )            secondsleft = QTime.currentTime().secsTo( time )            if secondsleft > 0:                self.alarmTimer.start( secondsleft * 1000, True )        except:            pass############################################################################# Stdin-Reader Thread############################################################################    def readStdin( self ):        while True:            line = sys.stdin.readline()            if line:                self.queue.put_nowait( line )            else:                break############################################################################# Command Handling############################################################################    def timerEvent( self, event ):        if not self.queue.empty():            string = QString( self.queue.get_nowait() )            print "[Alarm Script] Received notification: " + str( string )            if string.contains( "configure" ):                self.configure()    def configure( self ):        print "Alarm Script: configuration"        self.dia = ConfigDialog()        self.dia.show()        self.connect( self.dia, SIGNAL( "destroyed()" ), self.readSettings )############################################################################def main( args ):    app = Alarm( args )    app.exec_loop()if __name__ == "__main__":    main( sys.argv )

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?