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中操作文件之seek()方法的使用教程
May 24 Python
python编写Logistic逻辑回归
Dec 30 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
python三引号输出方法
Feb 27 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
python求前n个阶乘的和实例
Apr 02 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python定时器使用示例分享
2014/02/16 Python
Python可变参数用法实例分析
2017/04/02 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
对python中UDP,socket的使用详解
2019/08/22 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
请解释流与文件有什么不同
2016/07/29 面试题
货车司机岗位职责
2014/03/18 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
合理化建议书范文
2015/09/14 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
mysql 生成连续日期及变量赋值
2022/03/20 MySQL