----------------
折叠界面补充
--------------------
应のBlog
由于大家很着急知道文本处理的代码,因此折叠界面这节被跳过去了,现在回来继续说.呵呵
4.3.1-折叠界面补充
其实这节还是折叠界面的代码,只是增加了一些新鲜的东西.
先看图:
界面一:
界面二:
界面三:
上一讲的几个界面全部都是文本输入的界面,这次第一个界面加上了图标的 Listbox .第二个界面是 文本界面 ,第三个界面是 图形界面 .
看代码:
import appuifw
from graphics import *
def cn(x):return x.decode("utf-8")
icon1 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 28, 29)
icon2 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 40, 41)
icon3 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 30, 31)
icon4 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 32, 33)
icon5 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 34, 35)
icon6 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 36, 37)
icon7 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 38, 39)
list = [(cn("信号"), icon1),
(cn("电池"), icon2),
(cn("G"), icon3),
(cn("已经联网"), icon4),
(cn("联网断开"), icon5),
(cn("信号条"), icon6),
(cn("电量条"), icon7)]
def action():
appuifw.note(cn("米饭教程"),"info")
app1 = appuifw.Listbox(list,action)
app2 = appuifw.Text(u"Happy New Year")
def app_3():
img=Image.new((176,208))
img.rectangle((20,10,150,150),0)
img.point((50.,150.),0xff0000,width=40)
img.ellipse((100,150,150,180),0x0000ff)
img.text((40,80), cn("广告位招商"),0x0000ff,u"CombinedChinesePlain12")
def handle_redraw(rect):
canvas.blit(img)
canvas = appuifw.Canvas(event_callback=None, redraw_callback=handle_redraw)
appuifw.app.body = canvas
appuifw.app.menu=[(cn("示范目录"),lambda:appuifw.note(cn("正常"),"info"))]
def exit_key_handler():
appuifw.app.set_exit()
def handle_tab(index):
if index == 0:appuifw.app.body = app1
if index == 1:appuifw.app.body = app2
if index == 2:app_3()
appuifw.app.set_tabs([cn("界面一"),cn("界面二"),cn("界面三")],handle_tab)
appuifw.app.title = cn("折叠界面")
appuifw.app.body = app1
appuifw.app.exit_key_handler = exit_key_handler
点击下载代码
讲解:
先说一下定义的那些 icon(图标) . appuifw.Icon(MBM文件路径, MBM中图片位置1, 2)
玩机比较多的人应该知道 mbm 是由很多图片组成的,这里为什么要用到两张图片呢? 我的理解是有一张是蒙板.如果你自己要做这样的 mbm 文件的话,请去网上搜索 mbm 制作教程,本教程不讲解.
然后下面定义的 list 与以前的定义方法有所不同,因为多了图标,注意其格式就好了.
下面也没有什么需要讲解的.
需要注意的是:由于我们只是在 app_3 里面设置了目录选项 (menu) ,而前两个界面没有设置,因此我们在刚刚进入软件的时候是看不到目录选项的,只有切换到了 app_3 之后,软件才加载了 menu ,然后切换回前两个界面的时候,还是可以看到这个目录.为什么在 app_3 里定义的目录到 app2 界面还是能够显示呢?因为 app2 里面没有设置目录嘛.呵呵,如果你想让每个界面都有独立的目录,那就在定义每个界面的时候也同时定义 menu就可以了.
本来想继续写一下表格(form)的教程,但是忽然发现这个东西还挺深奥,刚研究完.明天再写教程吧.