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实现的解析crontab配置文件代码
Jun 30 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
python线程定时器Timer实现原理解析
Nov 30 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python类中super() 的使用解析
Dec 19 Python
Python实现CNN的多通道输入实例
Jan 17 Python
Python pip install如何修改默认下载路径
Apr 29 Python
Python接口测试环境搭建过程详解
Jun 29 Python
Python urllib库如何添加headers过程解析
Oct 05 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全局变量与超级全局变量区别分析
2016/04/01 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
json简单介绍
2008/06/10 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
node和vue实现商城用户地址模块
2018/12/05 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
华为python面试题
2016/05/03 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
小学生读书感言
2014/02/12 职场文书
史上最牛的辞职信
2015/02/28 职场文书
客户付款通知书
2015/04/23 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python