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 简易计算器程序,代码就几行
Aug 29 Python
python写入xml文件的方法
May 08 Python
Python实现模拟时钟代码推荐
Nov 08 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python3模拟登录操作实例分析
Mar 12 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
python中有关时间日期格式转换问题
Dec 25 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Python序列化pickle模块使用详解
Mar 05 Python
解决python便携版无法直接运行py文件的问题
Sep 01 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
咖啡与水的关系
2021/03/03 冲泡冲煮
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
教师年终个人自我评价
2013/10/04 职场文书
审计工作个人的自我评价
2013/12/25 职场文书
试用期员工考核制度
2014/01/22 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
租赁协议书
2015/01/27 职场文书
2016公司年会主持词
2015/07/01 职场文书