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 相关文章推荐
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
Python随机函数random()使用方法小结
Apr 29 Python
Python3多线程操作简单示例
May 22 Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
Python调用C++程序的方法详解
2017/01/24 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
Python request使用方法及问题总结
2020/04/26 Python
使用Python实现批量ping操作方法
2020/05/06 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
我与祖国共奋进演讲稿
2014/09/13 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
python实现黄金分割法的示例代码
2021/04/28 Python
正则表达式拆分url实例代码
2022/02/24 Java/Android