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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
Python函数装饰器实现方法详解
Dec 22 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
Python理解递归的方法总结
Jan 28 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
Numpy之reshape()使用详解
Dec 26 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
咖啡语言
2021/03/03 咖啡文化
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascript字符串与数组转换汇总
2015/05/26 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python多进程原理与用法分析
2018/08/21 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
django解决订单并发问题【推荐】
2019/07/31 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
印度网上药店:1mg
2017/10/13 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
学生干部的自我评价分享
2014/01/18 职场文书
酒鬼酒广告词
2014/03/21 职场文书
项目合作协议书
2014/04/16 职场文书
毕业设计说明书
2014/05/07 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
药店采购员岗位职责
2014/09/30 职场文书
自我查摆剖析材料
2014/10/11 职场文书
营业用房租赁协议书
2014/11/26 职场文书
论文致谢词范文
2015/05/14 职场文书
民主生活会意见
2015/06/05 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
golang内置函数len的小技巧
2021/07/25 Golang