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 15 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python中的常量和变量代码详解
Jul 25 Python
Python3模拟登录操作实例分析
Mar 12 Python
在pycharm中显示python画的图方法
Aug 31 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
numba提升python运行速度的实例方法
Jan 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扩展编写点滴 技巧收集
2010/03/09 PHP
PHP开发负载均衡指南
2010/07/17 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
python如何导入依赖包
2020/07/13 Python
python3判断IP地址的方法
2021/03/04 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
开学典礼主持词
2014/03/19 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
实践论读书笔记
2015/06/29 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python