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 相关文章推荐
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
理解Python中的With语句
Feb 02 Python
python基于Tkinter库实现简单文本编辑器实例
May 05 Python
用python写的一个wordpress的采集程序
Feb 27 Python
详解python中requirements.txt的一切
Mar 03 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
如何使用Python标准库进行性能测试
Jun 25 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
python3.7 的新特性详解
Jul 25 Python
Django 批量插入数据的实现方法
Jan 12 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
教你怎么用python爬取爱奇艺热门电影
May 20 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
loading动画特效小结
2017/01/22 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
利用Python破解斗地主残局详解
2017/06/30 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
经典c++面试题三
2015/07/08 面试题
名企HR怎样看待求职信
2014/02/23 职场文书
敬老院标语
2014/06/27 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
JavaScript 数组去重详解
2021/09/15 Javascript
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js