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 相关文章推荐
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
聊聊Python中的pypy
Jan 12 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
Flask之flask-script模块使用
Jul 26 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
利用python实现冒泡排序算法实例代码
Dec 01 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
Python 文本滚动播放器的实现代码
Apr 25 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分页示例代码
2007/03/19 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
原生js实现放大镜
2017/02/20 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python K近邻算法的kd树实现
2018/09/06 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
挂科检讨书范文
2014/02/20 职场文书
绩效工资实施方案
2014/03/15 职场文书
学习十八大标语
2014/10/09 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS