1.3.8Py编程学习之mbm位图处理由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第十一章位图的处理”。
1.3.8Py编程学习之mbm位图处 示例代码下载 #随缘情恋
#供麦友学习之用 import appuifw import MBM import graphics import powlite_fm def m(x):return x.decode('utf-8')appuifw.app.body=ca=appuifw.Canvas()appuifw.app.screen='large' appuifw.query(m('请选择mbm文件'),'query')mbm=powlite_fm.manager().AskUser('e:',ext=['.Mbm','.mbm','.MBM'])def redraw(rect,i=0): img=graphics.Image.new((176,208))img.clear(0x0000ff)png=MBM.image(mbm,i)ca.blit(img)ca.blit(png)ca.bind(49,lambda:redraw(rect,i+1))ca.bind(51,lambda:redraw(rect,i-1))redraw(())1.3.8Py编程学习之mbm位图处理:之前我发了个查看mbm位图的工具,接着就有麦友问我关于这方面的代码怎么写!今天我就来告诉大家如何去开发一个简单的位图查看工具!开始吧!#代码开始# import appuifw import MBM import graphics import powlite_fm def m(x):return x.decode('utf-8')appuifw.app.body=ca=appuifw.Canvas()appuifw.app.screen='large' appuifw.query(m('请选择mbm文件'),'query')mbm=powlite_fm.manager().AskUser('e:',ext=['.Mbm','.mbm','.MBM'])def redraw(rect,i=0): +img=graphics.Image.new((176,208))+img.clear(0x0000ff)+png=MBM.image(mbm,i)+ca.blit(IMG)+ca.blit(png)+ca.bind(49,lambda:redraw(rect,i+1))+ca.bind(51,lambda:redraw(rect,i-1))redraw(())#代码结束# 讲解:代码看起来似乎挺长的,其实新的内容就两点!既然是查看位图,那么我们的焦点当然就聚集在有关mbm文件的处理上!一开始你就可以注意到我引进了一个模块:MBM,是的,查看mbm中的位图就靠它了!怎么用?看回例子代码中有一句: png=MBM.image(mbm,i)我们借助了MBM模块中的image函数,使用格式为: png=MBM.image(mbm文件路径,位图次序)我把要查看的位图赋名为png,这样一来我们就可以像之前处理图像(保存、旋转、重设大小等)一样使用这张图像了!还有两句新的代码,挑其中一个来讲解: ca.bind(49,lambda:redraw(rect,i+1))其实他等价于:appuifw.app.body.bind(49,lambda:redraw(rect,i+1))!因为之前我们定义到appuifw.app.body=ca,所以可以简短地写成ca.bind(„)!这句代码有什么功能呢?你可以注意到i+1,而i是要查看的位图的次序,49是数字键1的键值!功能就是当你按下数字键1时,i的值就加1,进而可以查看到下一张位图!同理,i-1的那句是查看上一张的(51是数字键3的键值)!最后给大家一个好的课题就是你们可以利用上面的代码自己写一个解压mbm文件的小程序哦!好了,新的内容就这么多了,不懂就留言吧!1.3.9Py编程学习之查看信息收件箱: 1.3.9Py编程学习之查看信息收件箱: #代码开始# import appuifw import inbox i=inbox.Inbox()m=i.sms_meages()list=[] for t in m: +list.append(i.content(t))index=appuifw.selection_list(choices=list,search_field=1)if index!=-1: +appuifw.note(list[index])#代码结束# 讲解:查看信息收件箱内容,需要用到专门处理这一方面内容的模块inbox!i=inbox.Inbox()表示引用了inbox模块中的Inbox函数,而m=i.sms_meages()又进一步使用到了Inbox函数中的sms_meages方法,该方法返回一个按收信顺序排列的数字列表,越新的信息排得越前!接着我创建了一个空的列表list[],空的列表有何用?下面我们会在里面插入元素的!再下面: for t in m 我们使用了for循环在m这个列表中循环了一遍,然后我们就可以在列表中插入元素了(即append方法),元素为i.content(t),其中content翻译成中文有“内容”的意思,综合起来就是向列表中插入了收件箱信息的文本内容!这样一来,所获得的列表list就可以在接下来被用做列表界面所需的列表!好了,剩下的没什么好讲的了!
截图#随缘情恋
#供麦友学习之用 import appuifw import inbox i=inbox.Inbox()m=i.sms_meages()list=[] for t in m: list.append(i.content(t))index=appuifw.selection_list(choices=list,search_field=1)if index!=-1: appuifw.note(list[index])1.4.0Py编程学习之压缩运存、重启和关机
很久没出教程了,哎,没办法,太忙了!但这教程我是会不断更新的!这不,今天就又来出新教程啦!说点题外话,如果你能把之前教程的内容都学会了的话,那么也许你早就会自己去找更多的其他方面的知识,进度大大先于我所讲的内容了!但教程还是得继续的,毕竟这是用自己的话讲的,力求通俗易懂,不同于别人!好了,废话不多说!先来介绍一下今节的内容!正如教程题目:压缩运存、重启、关机!这些概念都是不需要多解释的了!开始看代码吧!#代码开始# import appuifw,miso import sysinfo,switchoff def m(x):return x.decode('utf-8')def compre(): +p=sysinfo.free_ram()+miso.compre_all_heaps()+p1=sysinfo.free_ram()+p2=((p1-p)/1024)+appuifw.note(m('压缩完成!已释放')+str(p2)+m('KB内存!'),'conf')def restartphone(): +miso.restart_phone()def shutdown(): +switchoff.Shutdown()appuifw.app.menu=[(m('压缩'),compre),(m('重启手机'),restartphone),(m('关机'),shutdown)] #代码结束# 讲解:压缩运存需要miso模块,重启、关机需要switchoff模块!而sysinfo模块是用来查看系统信息的!该示例代码共定义了三个函数:compre、restartphone、shutdown 单从英文字面意义上来看,分别对应了压缩运存、重启手机、关机这三个功能!下面分别简单介绍一下三个函数及其相关的新内容、新知识!compre函数:
这个函数的基本构造原理是:压缩运存之前获取系统的总空闲运存,然后执行压缩运存的指令进行运存的压缩,压缩后再获取系统总的空闲运存!最后将压缩后与压缩前的运存总量之差以弹出提示窗口的形式反馈给用户!其中有些新接触到的内容需要略微讲解一下。获取系统空闲内存:sysinfo.free_ram()之前提到,sysinfo模块的功能是查询系统信息,其用法下一节再详细讲解吧!而今节内容用到了其中一个函数:free_ram(),这个函数的功能是查询系统总空闲内存!其返回值是一个整形数值,该数值即为系统的总空闲内存,以字节b为单位!为了将其值转换成以KB为单位,我们将其除以1024(计算机2进制中2的10次方)!数值和字符串是有不同的,我们不能把数值当作字符使用,所以为了在弹出窗口中将压缩内存的信息反馈给用户,必须先把数值转化为可供使用的字符串,具体转化方法:str(*),其中*表示欲转化的内容,有时我们还得对转化过来的内容进行utf-8编码,则如此进行:str(*).decode('utf-8')!顺便讲一下,我们有时会把如i=u'916'的字符串内容转换成数值,那么相应的方法是:int(*),其中*表示数值字符串,即如u'123'的字符串才可以转换成数值,而如m('我爱你!')这样的字符串则无法转换!好了,怎么压缩内存才是关键,这个功能miso模块有:miso.compre_all_heaps()!这个函数很容易理解,其英文意义就是:压缩(compre)所有(all)线程(heaps)。简简单单一句代码就压缩了系统内存,也挺实用的!重启、关机:restartphone、shutdown 这两个函数没有什么冗杂的的构造,就分别直接应用了所引入的相应模块中的函数!正如代码中所示!另外,实现重启功能还有另一种方法:switchoff.Restart(),具体用哪一种,没什么不同!好了,这一节告终了!老做法,有疑问可以给我留言!下一节内容预告:系统信息查询!本节示例代码下载#随缘情恋 #供麦友学习之用 import appuifw,miso import sysinfo,switchoff def m(x):return x.decode('utf-8')def compre(): p=sysinfo.free_ram()miso.compre_all_heaps()p1=sysinfo.free_ram()p2=((p1-p)/1024)appuifw.note(m('压缩完成!已释放')+str(p2)+m('KB内存!'),'conf')def restartphone(): miso.restart_phone()def shutdown(): switchoff.Shutdown()appuifw.app.menu=[(m('压缩'),compre),(m('重启手机'),restartphone),(m('关机'),shutdown)]