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查询mysql,返回json的实例
Mar 26 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
python调用百度语音REST API
Aug 30 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
Pytorch之finetune使用详解
Jan 18 Python
Python matplotlib画曲线例题解析
Feb 07 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
python中%格式表达式实例用法
Jun 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
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
yii添删改查实例
2015/11/16 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python web基础之加载静态文件实例
2018/03/20 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
python学习笔记之多进程
2020/08/06 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
设备动力科岗位职责范本
2014/02/23 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
家长对孩子的寄语
2015/02/26 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
演讲开场白和结束语
2015/05/29 职场文书
初二英语教学反思
2016/02/15 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫