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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
Python实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python爬取淘宝商品销量信息
Nov 16 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Python实现像awk一样分割字符串
Sep 15 Python
pandas中对文本类型数据的处理小结
Nov 01 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
php注入实例
2006/10/09 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
vue生命周期的探索
2019/04/03 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python的Django框架中的数据库配置指南
2015/07/17 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
教师的实习自我鉴定
2013/12/17 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
一年级家长会邀请函
2014/01/25 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
小学班级口号
2014/06/09 职场文书
停电通知范文
2015/04/16 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL