Python S60 记事本源码

Python S60 记事本源码

暂时没有时间去研究中文的问题了。看到版里很多人多python写手机程序有兴趣就把源码发出来了。写的很乱。可以参考参考。
QQ:103315444
MSN:xiximato@hotmail.com

[Copy to clipboard] [ - ]
CODE:
#author:smallfish
#for:s60 python notebook


import appuifw
import e32
import os
import time

diary_root="e:/diary/"
title,content="",appuifw.Text()
def info(msg):
        appuifw.note(unicode(msg),'info')
def error(msg):
        appuifw.note(unicode(msg),'error')
def conf(msg):
        appuifw.note(unicode(msg),'conf')

def init():
        global diary_root
        if os.path.isdir(diary_root):
                info("Diary was inited!")
        else:
                os.makedirs(diary_root)
                info("init success!")
def home_ui():
        global title,content
        title=''
        content=appuifw.Text()
        appuifw.app.title=u'Diary v1.0'
        view_txt=appuifw.Text()
        view_txt.set(u'Name:\t Diary\nVersion:\t 1.0\nAuthor:\t smallfish')
        appuifw.app.body=view_txt
def save_diary():
        global diary_root,title,content
        if title!="" and content.get()!="":
                result={}
                result['title']=title
                result['content']=content.get()
                try:
                        file=diary_root+time.strftime("%Y%m%d%H%S%M")+".txt"
                        f=open(file,'w')
                        f.write(repr(result))
                        f.close()
                        conf("save success!\n"+file)
                        home_ui()
                except:
                        info("save faile!\n"+file)
        else:
                info("no data to save!")
def write_ui():
        global title,content
        title_txt=appuifw.query(u'input diary title:','text')
        content=appuifw.Text()
        appuifw.app.title=title_txt
        appuifw.app.body=content
        title=title_txt
def view_ui():
        global diary_root
        appuifw.app.title=u'View Diary'
        try:
                diary_list=map(unicode,os.listdir(diary_root))
                index=appuifw.selection_list(choices=diary_list,search_field=1)
                file=diary_root+diary_list[index]
                try:
                        f=open(file,'r')
                        result=f.read()
                        f.close();
                        data=eval(result)                       
                        title=data.get("title","")
                        content=data.get("content","")
                        appuifw.app.title=title
                        content_txt=appuifw.Text()
                        content_txt.set(content)
                        appuifw.app.body=content_txt
                except:
                        info("open file faile!\n"+file)
        except:
                info("Error!please init!")

def quit():
        if appuifw.query(u'Be Sure to Quit?','query'):
                appuifw.app.set_exit()

app_lock=e32.Ao_lock()
home_ui()
appuifw.app.title=u'Diary v1.0'
appuifw.app.screen='normal'
appuifw.app.menu=[(u'init diary',init),(u'home',home_ui),(u'write diary',write_ui),(u'save diary',save_diary),

(u'view diary',view_ui),(u'quit',quit)]
appuifw.app.exit_key_handler=quit
app_lock.wait()

菜单里想使用中文的话可以这样:

[Copy to clipboard] [ - ]
CODE:
u'init diary'

改成

[Copy to clipboard] [ - ]
CODE:
'初始化'.decode('utf8')

在S60 SDK的模拟器里试了你的程序,提示保存成功但找不到保存的文件,退出时会造成Python解释器也异常退出

又试了一下,日记保存的目录需要改一下,模拟器里没有e盘,改成c就行了。
最好可以判断一下,根据具体情况设定保存目录,比如有的手机可以也没有e盘

退出时的异常还没找到原因
退出的代码改成这样就可以了,但不知道在手机上运行的效果

[Copy to clipboard] [ - ]
CODE:
def quit():
        if appuifw.query(u'Be Sure to Quit?','query'):
                appuifw.app.exit_key_handler = None
                app_lock.signal()

有注释就好了
import appuifw
import e32
根本就不知道是什么?
TO:wolfg   
目前s60 3rd pys60 1.3 试用你的方法
'初始化'.decode('utf8')
也无法生成中文的菜单,有其他的方法么
吼吼,偶都是直接在手机上测试的,一时心血来潮
# -*- coding:utf8 -*- #utf8 编码
import sys
import messaging
import string
sys.setdefaultencoding('utf8')  #utf8编码

nbr1 = "您的手机号"
txt1 = "中文"

messaging.sms_send(nbr1, txt1,'UCS2')  #发送编码改为UCS2编码。
中文菜单可以用u'\uXXXX\uXXXX'的办法
貌似麻烦..
在N73上测试通过

[Copy to clipboard] [ - ]
CODE:
##################################
#-*- coding:utf8 -*-             #
#    Author:biansutao@gmail.com  #
#    Purpose:Text edit programer #
#                                #
##################################
#import s60
import appuifw
import e32
#import sys
import os
import time
import sys
sys.setdefaultencoding("utf8")

rootDir="e:/text/"

title = ""
content = ""
app_lock=e32.Ao_lock()
def info(msg):
    appuifw.note(msg,'info')
def error(msg):
    appuifw.note(msg,'error')
def conf(msg):
    appuifw.note(msg,'conf')
   
def init():
    global rootDir
    if not os.path.isdir(rootDir):
        os.makedirs(rootDir)
def new():
    global content,title
    content=appuifw.Text()
    content.set("")
    appuifw.app.body=content
    appuifw.app.title=unicode("","utf8")
    title = unicode("","utf8")
def save():
    global rootDir,title,content
    file = ""
    if title == "":
        if not appuifw.query(unicode("请输入文件名","utf8"),'query'):
            file=rootDir+time.strftime("%Y%m%d%H%S%M")+".txt"
        else:
            newTitle=appuifw.query(unicode("请输入文件标题:","utf8"),'text')
            appuifw.app.title=newTitle
            title=newTitle
            file=rootDir+title+".txt"
    else:
        file=rootDir+title+".txt"
    result={}
    result['title']=title
    result['content']=content.get()
    try:
        f=open(file,'w')
        f.write(repr(result))
        f.close()
        msg = unicode("保存成功","utf8")+file
        conf(msg)
    except IOError,TypeError:
        msg = unicode("保存失败","utf8")+file
        info(msg)
        
def saveas():
    global title
    newTitle=appuifw.query(unicode("请输入文件标题:","utf8"),'text')
    appuifw.app.title=newTitle
    title=newTitle
    save()
def list():
    global rootDir,title,content
    appuifw.app.title=unicode("请您选择文件","utf8")
    try:
        list=map(unicode,os.listdir(rootDir))
        index=appuifw.selection_list(choices=list,search_field=1)
        file=rootDir+list[index]
        try:
            f=open(file,'r')
            result=f.read()
            f.close();
            data=eval(result)                        
            title=data.get("title","")
            content1=data.get("content","")
            appuifw.app.title=title
            content=appuifw.Text()
            content.set(content1)
            appuifw.app.body=content
        except:
            info(unicode("打开文件失败","utf8")+"\n"+file)
    except:
        info(unicode("选择文件发生错误","utf8"))
   
def quit():
    if appuifw.query(unicode("确认退出?","utf8"),'query'):
        app_lock.signal()
#        appuifw.app.set_exit()
def about():
    appuifw.note(unicode("记事本 V1.0","utf8"),'info')
def delete():
    global rootDir,title,content
    appuifw.app.title=unicode("请您选择要删除的文件","utf8")
    try:
        list=map(unicode,os.listdir(rootDir))
        index=appuifw.selection_list(choices=list,search_field=1)
        file=rootDir+list[index]
        try:
            if appuifw.query(unicode("确认删除文件吗?","utf8"),'query'):
                os.remove(file)
                info(unicode("删除成功","utf8")+"\n"+file)
        except:
            info(unicode("删除文件失败","utf8")+"\n"+file)
    except:
        info(unicode("选择文件发生错误","utf8"))
   
if __name__ == "__main__":
    appuifw.app.title=unicode("记事本","utf8")
    appuifw.app.screen='normal'
    appuifw.app.menu=[(unicode("新建","utf8"),new),(unicode("保存","utf8"),save),(unicode("另存为","utf8"),saveas),(unicode("打开","utf8"),list),(unicode("删除","utf8"),delete),(unicode("退出","utf8"),quit),(unicode("关于","utf8"),about)]
    appuifw.app.exit_key_handler=quit
    content=appuifw.Text()
    content.set("")
    appuifw.app.body=content
    init()
    app_lock.wait()