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实现的检测web服务器健康状况的小程序
Sep 17 Python
Pycharm学习教程(2) 代码风格
May 02 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
pytorch查看模型weight与grad方式
Jun 24 Python
用python对oracle进行简单性能测试
Dec 05 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
简单的React SSR服务器渲染实现
2018/12/11 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
Python with用法实例
2015/04/14 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
python SocketServer源码深入解读
2019/09/17 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
J2EE模式面试题
2016/10/11 面试题
初任培训自我鉴定
2013/10/07 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
网络技术专业求职信
2014/05/02 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
对学校的意见和建议
2015/06/04 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
彻底理解golang中什么是nil
2021/04/29 Golang
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
golang 语言中错误处理机制
2021/08/30 Golang