Python(PyS60)实现简单语音整点报时


Posted in Python onNovember 18, 2019

本文实例为大家分享了python语音整点报时的具体代码,供大家参考,具体内容如下

主要的技术特殊点在于PyS60的定时器最多只能定2147秒。在手机上直接写的。

import e32
import audio
import time
import appuifw
import sys
import os.path
import marshal
 
def say(oclock):
  """say the time in English"""
  c = oclock
  if c > 12:
    c -= 12
  cs = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve'][c]
  audio.say("it's " + cs + " o'clock.")
  
def say_current():
  global Sayflags
  t = time.localtime()
  # say according to configuration
  if Sayflags[int(t[3])] == 1:
    say(t[3])
  
def on_oclock():
  """when an o'clock arrived"""
  say_current()
  start_timer()
  
def start_timer():
  """start a timer that will be reached at next o'clock"""
  global Timer
  lt = time.localtime()
  d = 60 * (59 - lt[4]) + 61 - lt[5]
  if d>2147:
    Timer.after(2147, lambda : Timer.after(d-2147, on_oclock)) 
  else:
    Timer.after(d, on_oclock)
  
def clock_names():
  return [u'0:00', u'1:00', u'2:00', u'3:00', u'4:00', u'5:00', u'6:00', u'7:00', u'8:00', u'9:00', u'10:00', u'11:00', u'12:00', u'13:00', u'14:00', u'15:00', u'16:00', u'17:00', u'18:00', u'19:00', u'20:00', u'21:00', u'22:00', u'23:00']
  
def list_handler():
  """set flag and refresh the listbox"""
  global Lb
  global Sayflags
  c = Lb.current()
  Sayflags[c] = 1 - Sayflags[c]
  Lb.set_list(list_content(), c)
 
def list_content():
  global Sayflags
  icons = [appuifw.Icon(u"z:\\resource\\apps\\avkon2.mif", 16506, 16507), appuifw.Icon(u"z:\\resource\\apps\\avkon2.mif", 16504, 16505)] # unchecked, unchecked
  return map(lambda s, f: tuple([s, icons[f]]), clock_names(), Sayflags)
  
def exit_handler():
  global Lock
  global Timer
  global Standalone
  Timer.cancel()
  save_cfg()
  if not Standalone:
    Lock.signal()
  else:
    appuifw.app.set_exit()
 
def save_cfg():
  global Sayflags
  try:
    f = open(Configfile, 'wb')
    marshal.dump(Sayflags, f)
    f.close()
  except:
    pass
  
def load_cfg():
  global Sayflags
  try:
    f = open(Configfile, 'rb')
    Sayflags = marshal.load(f)
    f.close()
  except:
    pass
 
# Testing code
def test():
  say_current()
  #on_oclock()
  #for n in range(1,13):
  #  say(n)
#test()
 
def main():
  global Standalone
  appuifw.app.title = u'Audio Clock'
  appuifw.app.exit_key_handler = exit_handler
  appuifw.app.body = Lb
  if time.localtime()[4] == 0:
    say_current()
  start_timer()
  if not Standalone:
    Lock.wait()
  
Standalone = True
Timer = e32.Ao_timer()
Lock = e32.Ao_lock()
Configfile = os.path.abspath(os.path.dirname(sys.argv[0])) + '\\audioclock.cfg'
Sayflags = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1] #24 clocks' flags
load_cfg()
Lb = appuifw.Listbox(list_content(), list_handler)
main()

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

Python 相关文章推荐
Python Web开发模板引擎优缺点总结
May 06 Python
Python学习入门之区块链详解
Jul 25 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
python文件选择对话框的操作方法
Jun 27 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
pytorch 模型的train模式与eval模式实例
Feb 20 Python
Python模块相关知识点小结
Mar 09 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
浅析python连接数据库的重要事项
Feb 22 Python
wxPython实现整点报时
Nov 18 #Python
python字符串的拼接方法总结
Nov 18 #Python
python将字符串转变成dict格式的实现
Nov 18 #Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 #Python
python实现输出一个序列的所有子序列示例
Nov 18 #Python
Python中的四种交换数值的方法解析
Nov 18 #Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 #Python
You might like
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP Document 代码注释规范
2009/04/13 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
模拟select的代码
2011/10/19 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
Python如何给函数库增加日志功能
2020/08/04 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
中专生自我鉴定范文
2013/12/19 职场文书
新学期家长寄语
2014/01/19 职场文书
党员承诺践诺书
2014/05/20 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
实习生辞职信范文
2015/03/02 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
APP界面设计技巧和注意事项
2022/04/29 杂记