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函数帮助查询小工具
Mar 13 Python
python和shell变量互相传递的几种方法
Nov 20 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
python分析网页上所有超链接的方法
May 08 Python
详解python单例模式与metaclass
Jan 15 Python
Python中set与frozenset方法和区别详解
May 23 Python
python基础教程之分支、循环简单用法
Jun 16 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python Web服务器Tornado使用小结
2014/05/06 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
python中列表和元组的区别
2017/12/18 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
试用期自我评价怎么写
2015/03/10 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python