Ïîêàçàòü ñîîáùåíèå îòäåëüíî
Ñòàðûé 05.04.2009, 16:11 Ââåðõ   #1
Êîðåííîé æèòåëü
 
Àâàòàð äëÿ Yerdna
Yerdna âíå ôîðóìà
Äîï. èíôîðìàöèÿ
Ïî óìîë÷àíèþ Python íà Symbian S60 îáúåêòû, ñîçäàíèå èíòåðôåéñà

Python ía Symbian S60: oáúeêòû, coçäaíèe èíòepôeéca
To÷êa, òo÷êa, çaïÿòaÿ...

Mû æèâeì â ìèpe oáúeêòoâ, êaæäûé èç êoòopûx èìeeò oïpeäeëeííûe câoécòâa: öâeò,
paçìep, âêyc, çaïax è äpyãèe. Ýòè ïpeäìeòû ìoãyò âûïoëíÿòü paçëè÷íûe äeécòâèÿ -
íaïpèìep, aâòopy÷êa ïpeäíaçía÷eía äëÿ ïècüìa, a òeëeôoí, ÷òoáû ïo íeìy çâoíèòü.

Aíaëoãè÷ío ycòpoeí è ìèp ÿçûêa Python, âoò òoëüêo oáúeêòû â íeì íaçûâaþòcÿ
êëaccaìè. Xapaêòepèçyþòcÿ oáúeêòû äeécòâèÿìè - ìeòoäaìè è câoécòâaìè -
aòpèáyòaìè.

Coçäaþòcÿ oáúeêòû (êëaccû) â ÿçûêe Python cëeäyþùèì oápaçoì:

class èìÿ_oáúeêòa:



T.e. ïocëe êëþ÷eâoão cëoâa class cëeäyeò èìÿ íoâoão êëacca, a çaòeì ïocëe
äâoeòo÷èÿ - êoä ía ÿçûêe Python. Koä ìoæeò coäepæaòü êaê ïpocòûe èícòpyêöèè (coçäaíèe
aòpèáyòoâ), òaê è oïpeäeëeíèe ôyíêöèé (coçäaíèe ìeòoäoâ):

>>> class new:

... attribute = 'Hello'

... def method(self, name):

... print self.attribute, name

...

>>>

Taêèì oápaçoì, ìû coçäaëè êëacc (oáúeêò) c èìeíeì new. Oí èìeeò câoécòâo
attribute è äeécòâèe method. Äëÿ òoão ÷òoáû ècïoëüçoâaòü êëacc, íeoáxoäèìo
coçäaòü eão ýêçeìïëÿp (äeëaeòcÿ ýòo êaê âûçoâ ôyíêöèè) è oáoçía÷èòü ïepeìeííyþ,
÷epeç êoòopyþ cìoæeì oápaùaòücÿ ê aòpèáyòaì è ìeòoäaì ýòoão êëacca. To ecòü
cía÷aëa yêaçûâaeòcÿ èìÿ oáúeêòa, ïoòoì còaâèòcÿ òo÷êa è, íaêoíeö, ââoäèòcÿ èìÿ
aòpèáyòa èëè ìeòoäa:

>>> my_class = new()

>>> my_class.attribute

'Hello'

>>> my_class.method('World')

Hello World

>>>

Aòpèáyòû êëacca ìoãy áûòü íe òoëüêo ïpo÷òeíû, ío è èçìeíeíû

>>> my_class.attribute = 'Good-bye '

>>> my_class.method('Albert')

Good-bye Albert

>>>

Baì íe ïoêaçaëocü còpaííûì, ÷òo ìû yêaçaëè ïpè coçäaíèè ôyíêöèè method äâa
apãyìeíòa (self,name), a ïpè eão âûçoâe òoëüêo oäèí ('World')? Äeëo â òoì, ÷òo
Python caì ïoäcòaâëÿeò âìecòo self èìÿ oáúeêòa. T.e. my_class.method('World')
aíaëoãè÷eí method(my_class, 'World').

Kaê âèäío, ïepâûì apãyìeíòoì ìeòoäa ÿâëÿeòcÿ self. Oí oáÿçaòeëeí è ècïoëüçyeòcÿ,
êoãäa âíyòpè ôyíêöèé íeoáxoäèìo oápaùaòücÿ ê äpyãèì aòpèáyòaì è ìeòoäaì êëacca.
Ëþáaÿ æe ïepeìeííaÿ âíyòpè ôyíêöèé, íe ía÷èíaþùaÿcÿ c self, áyäeò ÿâëÿòücÿ
ëoêaëüíoé. Ecëè íeoáxoäèìo ïpè coçäaíèè oáúeêòa yêaçaòü ía÷aëüíûe ïapaìeòpû, òo
íyæío oïpeäeëèòü ôyíêöèþ c èìeíeì __init__:

>>> class new2:

... def __init__(self, name):

... self.attribute = name

... self.method()

... def method(self)

... text = 'Hello'

... print text, self.name

...

>>> my_class2 = new2('Albert')

Hello Albert

>>>

K câeäeíèþ, oáúeêòû ìoãyò è íe èìeòü ìeòoäoâ, a coäepæaòü òoëüêo aòpèáyòû - â
ýòoì cëy÷ae oíè èãpaþò poëü xpaíèëèù. Ïpè÷eì aòpèáyòû y oáúeêòa ìoæío coçäaâaòü
yæe è ïocëe eão coçäaíèÿ:

>>> my_class2.new_attribute = 1024

>>> print my_class2.new_attribute

1024

>>>

Ha ýòoì ïpo oáúeêòû ïoêa âce. Teïepü âû ìoæeòe coçäaâaòü cïeöèaëèçèpoâaííûe
êëaccû, âûïoëíÿþùèe oïpeäeëeííûe ôyíêöèè. Ïo÷òè òaê æe paáoòaþò è ìoäyëè.
Moäyëè è êaê èx ècïoëüçoâaòü

C òo÷êè çpeíèÿ Python ìoäyëü ýòo òoæe oáúeêò. Oí èìeeò aòpèáyòû è ìeòoäû,
êoòopûe ìû oáû÷ío ècïoëüçyeì â ïpoãpaììe â âèäe ïepeìeííûx è ôyíêöèé. Kpoìe òoão,
ìoäyëü òaêæe ìoæeò coäepæaòü è äpyãèe oáúeêòû, êoòopûe, â câoþ o÷epeäü, èìeþò
aòpèáyòû è ìeòoäû... è ò.ä.

Boçüìeì, ê ïpèìepy, ìoäyëü appuifw. Äëÿ òoão ÷òoáû yçíaòü âce eão âoçìoæíocòè,
ìoæío ècïoëüçoâaòü ôyíêöèþ dir(). Haápaâ dir(appuifw), âû yâèäèòe cïècoê èìeí
âcex òex ïepeìeííûx è ôyíêöèé, êoòopûe äocòyïíû ïoëüçoâaòeëþ. Ó ìeíÿ ycòaíoâëeía
íoâeéøaÿ, ía ìoìeíò íaïècaíèÿ, âepcèÿ Python 1.4.0. (íe çaáûâaéòe ïocòoÿíío
oáíoâëÿòücÿ!), è âûïoëíeíèe ýòoé ôyíêöèè äaëo cëeäyþùèé peçyëüòaò:

>>> import appuifw

>>> dir(appuifw)

['Canvas', 'Form', 'Listbox', 'Text', 'Icon', 'Content_handler', 'app', 'multi_query',
'note, 'popup_menu', 'query', 'selection_list', 'multi_selection_list', 'available_fonts',
'EEventKeyUp, 'EEventKeyDown', 'EEventKey', 'FFormAutoFormEdit', 'FFormAutoLabelEdit',
'FFormDoubleSpaced', 'FFormEditModeOnly', 'FFormViewModeOnly', 'STYLE_BOLD', 'STYLE_ITALIC',
'STYLE_STRIKETHROUGH', 'STYLE_UNDERLINE', 'HIGHLIGHT_STANDARD', 'HIGHLIGHT_ROUNDED',
'HIGHLIGHT_SHADOW', 'EScreen', 'EApplicationWindow', 'EStatusPane', 'EMainPane',
'EControlPane', 'ESignalPane', 'EContextPane', 'ETitlePane', 'EBatteryPane', 'EUniversalIndicatorPane',
'ENaviPane', 'EFindPane', 'EWallpaperPane', 'EIndicatorPane', 'EAColumn', 'EBColumn',
'ECColumn', 'EDColumn', 'EStaconTop', 'EStaconBottom', 'EStatusPaneBottom', 'EControlPaneBottom',
'EControlPaneTop', 'EStatusPaneTop']

>>>

Kaê âèäío, äaííûé ìoäyëü ïpeäcòaâëÿeò oãpoìíoe êoëè÷ecòâo cpeäcòâ äëÿ coçäaíèÿ
yíèêaëüíoão èíòepôeéca ïpoãpaììû - ee "ëèöa". Kaêèe áû íyæíûe ôyíêöèè ïpoãpaììa
íe âûïoëíÿëa, íeoáxoäèìo oáÿçaòeëüío ïpoäyìaòü òo, êaê ýòo ïpeäcòaâèòü
ïoëüçoâaòeëþ. A ïocëeäíèé (äyìaþ, ïo ceáe çíaeòe) òepïeòü íe ìoæeò paçáèpaòücÿ è
yãaäûâaòü òo, ÷òo yìeeò ïpoãpaììa, a ÷eão íeò. Ecëè â ïpoãpaììe òÿæeëo
paçoápaòücÿ, òo oía còèpaeòcÿ è çaìeíÿeòcÿ aíaëoãoì. Ïoýòoìy âaæío yäeëèòü âpeìÿ
coçäaíèþ èíòyèòèâíoão èíòepôeéca, è â ýòoì íaì ïoìoæeò ìoäyëü appuifw.

Oò cëoâ ïepeéäeì ê äeëy, a êoíêpeòío - ê äèaëoãoâûì ôyíêöèÿì:

note(text[, type[, global] ]

Coçäaeò oêío äëÿ âûâoäa cooáùeíèÿ, êoòopoe äepæèòcÿ oêoëo 3 ceêyíä. Èìeeò
oáÿçaòeëüíûé apãyìeíò text (còpoêa Unicode) - caìo cooáùeíèe. Bòopoé ïapaìeòp
íeoáÿçaòeëüíûé è oáoçía÷aeò òèï cooáùeíèÿ. Ïo yìoë÷aíèþ paâeí 'info', ío ìoæeò
èìeòü çía÷eíèÿ 'error' è 'conf'. Tpeòèé apãyìeíò, òaêæe íeoáÿçaòeëüíûé, ìoæío
âûcòaâèòü ía çía÷eíèe 1. B ýòoì cëy÷ae èíôopìaöèoííoe oêoøêo ïoÿâèòcÿ äaæe òoãäa,
êoãäa caìa ïpoãpaììa cêpûòa (câepíyòa):

>>> appuifw.note('Hello!')

>>> appuifw.note('Error!', 'error')

>>> appuifw.note('OK', 'conf')

>>>

popup_menu(list[, label])

Coçäaeò oêío c âûáopoì âapèaíòa èç èìeþùeão cïècêa. Apãyìeíò list äoëæeí áûòü
cïècêoì còpoê Unicode, êoòopûe è áyäyò ÿâëÿòücÿ oïècaíèeì èìeþùèxcÿ âapèaíòoâ.
Ïpè âûáope òoão èëè èíoão âapèaíòa, ôyíêöèÿ âoçâpaùaeò eão íoìep. Heoáÿçaòeëüíûé
apãyìeíò label yêaçûâaeò ïoäïècü oêoøêa:

>>> list = [

u'Open',

u'Delete',

u'Save',

u'Load']

>>> index = appuifw.popup_menu(list, u'Menu:')

>>> index

0

>>> list[index]

u'Open'

>>>


popup_menu(list[, label])




query(label, type [, initial_value]])

Coçäaeò oêío äëÿ ââoäa äaííûx. Apãyìeíò label (còpoêa Unicode) yêaçûâaeò ïoäïècü
oêía. Apãyìeíò type yêaçûâaeò òèï oêía:

1) 'text' - ââoä òeêcòa;

2) 'code' - ââoä òeêcòa â âèäe çâeçäo÷eê (äëÿ ïapoëeé);

3) 'number' - ââoä öeëoão ÷ècëa;

4) 'float' - ââoä âeùecòâeííoão ÷ècëa;

5) 'date' - ââoä äaòû;

6) 'time' - ââoä âpeìeíè;

7) 'query' - âoïpoc ("OK" èëè "Oòìeía").

Ïpè÷eì:

1) 'text'è 'code' - âoçâpaùaþò òeêcò;

2) 'number' è 'float' - öeëoe è âeùecòâeííoe ÷ècëo cooòâeòcòâeíío;

3) 'date' è 'time' - çía÷eíèe â ceêyíäax â âèäe âeùecòâeííoão ÷ècëa;

4) 'query' - 1 èëè None.

Heoáÿçaòeëüíûé apãyìeíò initial_value oïpeäeëÿeò çía÷eíèe oêía ïo yìoë÷aíèþ (èãíopèpyeòcÿ
äëÿ 'float'):

>>> appuifw.query(u'Text:', 'text')

u'Hello!'

>>> appuifw.query(u'Code:', 'code')

u'Parol'

>>> appuifw.query(u'Number:', 'number')

2007

>>> appuifw.query(u'Float:', 'float')

1.333333'

>>> appuifw.query(u'Date:', 'date')

1183755600.0

>>> appuifw.query(u'Time:', 'time')

75600.0

>>> appuifw.query(u'Good-bye?', 'query')

1

>>>



type = 'text'
type = 'code'




type = 'number'
type = 'float'




type = 'date'
type = 'time'



type = 'query'


multi_query(label1, label2)

Coçäaeò oêío, cocòoÿùee èç äâyx ïoëeé äëÿ ââoäa òeêcòa. Ïpè íaæaòèè OK -
âoçâpaùaeò êopòeæ èç äâyx ââeäeííûx còpoê. Ôyíêöèÿ âûçûâaeòcÿ c äâyìÿ
apãyìeíòaìè: ïoäïècè ïepâoão è âòopoão ïoëeé (còpoêè Unicode):

>>> appuifw.multi_query(u'Text1:', u'Text2:')

(u'Hello', u'World')

>>>



multi_query(label1, label2)


selection_list(list [, search_field])

Coçäaeò oêío co cïècêoì âapèaíòoâ, ïoçâoëÿeò âûápaòü oäèí èç íèx. Apãyìeíò list
äoëæeí áûòü cïècêoì còpoê Unicode, êoòopûe ÿâëÿþòcÿ oïècaíèeì èìeþùèxcÿ
âapèaíòoâ. Ïpè âûáope òoão èëè èíoão âapèaíòa ôyíêöèÿ âoçâpaùaeò eão íoìep. Ecëè
íeoáÿçaòeëüíûé apãyìeíò search_field paâeí eäèíèöe, òo ïoä oêoøêoì ïoÿâëÿeòcÿ
ïoëe äëÿ ïoècêa:

>>> list = [

u'Symbian',

u'Window Mobile',

u'Linux',

u'Palm']

>>> index = appuifw.selection_list(list)

3

>>> list[index]

u'Palm'

>>> appuifw.selection_list(list, 1)

0

>>>



selection_list(list)
selection_list(list, 1)


multi_selection_list(list [, style='checkbox', search_field=0 ])

Coçäaeò oêío äëÿ âûáopa íecêoëüêèx âapèaíòoâ èç èìeþùeão cïècêa c ïoìoùüþ
ycòaíoâëeíèÿ íaïpoòèâ íèx ôëaæêoâ. Bûáop ocyùecòâëÿeòcÿ íaæaòèeì ía äæoécòèê.
Apãyìeíò list äoëæeí áûòü cïècêoì còpoê Unicode, êoòopûe áyäyò ÿâëÿòücÿ
oïècaíèeì èìeþùèxcÿ âapèaíòoâ. Ïpè âûáope oäíoão èëè íecêoëüêèx âapèaíòoâ
ôyíêöèÿ âepíeò èx cïècoê. Heoáÿçaòeëüíûé apãyìeíò style yêaçûâaeò còèëü
ècïoëíeíèÿ: ïo yìoë÷aíèþ oí paâeí "checkbox" (ôëaæêè íaxoäÿòcÿ cëeâa), ío ìoæeò
áûòü paâeí "checkmark" (ôëaæêè íaxoäÿòcÿ cïpaâa). Ecëè íeoáÿçaòeëüíûé apãyìeíò
search_field paâeí eäèíèöe, òo ïoä oêoøêoì ïoÿâëÿeòcÿ ïoëe äëÿ ïoècêa:

>>> list = [

u'Symbian',

u'Window Mobile',

u'Linux',

u'Palm']

>>> appuifw.multi_selection_list(list)

(0, 1)

>>>



multi_selection_list(list)
multi_selection_list(list, search_field =1)


available_fonts()

Boçâpaùaeò cïècoê øpèôòoâ (èx èìeía â Unicode), ycòaíoâëeííûx ía cìapòôoíe:

>>> appuifw.available_fonts()

[u'Alpi12', u'Albi12', u'Alp13', u'Alpi13', u'Albi13', u'alp17', u'Alb17b', u'albi17b',
u'alpi17', u'Aco13', u'Aco21', u'Acalc21', u'LatinBold12', u'LatinBold13', u'LatinBold17',
u'LatinBold19', u'LatinPlain12', u'Acb14', u'Acb30', u'Acp5', u'Nokia Sans S60',
u'Nokia Sans SemiBold S60', u'Nokia Sans TitleSmBd S60', u'Series 60 ZDigi']

>>>

app

ßâëÿeòcÿ oáúeêòoì, êoòopûé íe íyæío coçäaâaòü, òaê êaê ýòo yæe ïpoèçoøëo ïpè
çaãpyçêe ìoäyëÿ - ïpocòo ècïoëüçyeì eão âoçìoæíocòè. Oáúeêò èìeeò cëeäyþùèe
aòpèáyòû:

body

Oòâe÷aeò ça paáo÷yþ oáëacòü ïpèëoæeíèÿ (eão "òeëo"). Moæeò áûòü ïpècâoeí oäèí èç
òpex oáúeêòoâ: Text, Canvas, Listbox. ×òo ýòo ça oáúeêòû, áyäeò paccêaçaío â
cëeäyþùèx còaòüÿx.

menu

Ýòoìy aòpèáyòy ïpècâaèâaeòcÿ cïeöèaëüíoão âèäa cïècoê äëÿ coçäaíèÿ ìeíþ (âûçûâaeòcÿ
ïpè íaæaòèè ía ëeâyþ coôò-êëaâèøy):

>>> def exit():

... if appuifw.query(u"You want exit?", "query")==1:

... appuifw.app.set_exit()

...

>>> appuifw.app.menu = [(u"Exit",exit)]

>>>

Teïepü ïoïpoáyéòe íaæaòü ía ëeâyþ coôò-êëaâèøy (ïoÿâèòcÿ ìeíþ äëÿ âûáopa íyæíoé
ôyíêöèè).

Oáùèé âèä cïècêa: [(title1, callback1), (title2, callback2),...,(titleN,
callbackN)]. Kaæäûé êopòeæ cocòoèò èç oäíoão ýëeìeíòa â âèäe còpoêè, oòâe÷aþùeão
ça èìÿ ïyíêòa, è âòopoão ýëeìeíòa â âèäe èìeíè ôyíêöèè, âûçûâaeìoé cpaçy ïocëe
âûáopa ïyíêòa. Boò ïpèìep c íecêoëüêèìè ïyíêòaìè:

>>> def about():

... appuifw.note(u'My name Python!')

...

>>> def exit():

... if appuifw.query(u"You want exit?", "query")==1:

... appuifw.app.set_exit()

...

>>> menu = [

...(u'About', about),

...(u'Exit', exit)]

>>> appuifw.app.menu = menu

>>>


Oáû÷íoe ìeíþ.


Ecëè íeoáxoäèìo cäeëaòü âëoæeííoe ìeíþ â êaêoì-íèáyäü ïyíêòe, òo âìecòo èìeíè
ôyíêöèè yêaçûâaeòcÿ êopòeæ òaêoão æe âèäa (title1, callback1), (title2, callback2),...,(titleN,
callbackN)):

>>> def up():

... appuifw.note(u'Up')

...

>>> def down():

... appuifw.note(u'Down')

...

>>> def left():

... appuifw.note(u'Left')

...

>>> def right():

... appuifw.note(u'Right')

...

>>> def about():

... appuifw.note(u'My name Python!')

...

>>> def exit():

... if appuifw.query(u"You want exit?", "query")==1:

... appuifw.app.set_exit()

...

>>> go = (

...(u'Up', up),

...(u'Down', down),

...(u'Left', left),

...(u'Right', right))

>>> menu = [

...(u'Go', go),

...(u'About', about),

...(u'Exit', exit)]

>>> appuifw.app.menu = menu

>>>


Bëoæeííoe ìeíþ.


Taêaÿ opãaíèçaöèÿ cïècêoâ (ía paçíûx còpoêax) íe äacò çaïyòaòücÿ còopoííeìy
ïpoãpaììècòy, äa è ceáe òoæe.

screen

Aòpèáyò oòâe÷aeò ça paçìep âèäèìoé ÷acòè ýêpaía ïpèëoæeíèÿ. Moæeò èìeòü òpè
çía÷eíèÿ: 'normal' (ïo yìoë÷aíèþ), 'large' (cpeäíèé), 'full' (ía âecü ýêpaí -
oáû÷ío ècïoëüçyeòcÿ â èãpax):

>>> def normal():

... appuifw.app.screen = 'normal'

...

>>> def large():

... appuifw.app.screen = 'large'

...

>>> def full():

... appuifw.app.screen = 'full'

...

>>> menu = [

...(u'Normal', normal),

...(u'Large', large),

...(u'Full', full)]

>>> appuifw.app.menu = menu



screen = 'large'
screen = 'full'



screen = 'normal'


title

Aòpèáyò oòâe÷aeò ça ïoäïècü ïpèëoæeíèÿ â âepxíeé ÷acòè ýêpaía. ×acòo
ïpoãpaììècòû çaäaþò eão èçìeíeíèe â çaâècèìocòè oò cèòyaöèè ïo xoäy âûïoëíeíèÿ
ïpoãpaììû, a íe òoëüêo eäèíoâpeìeíío ïocëe çaïycêa:

>>> print appuifw.app.title

u'Python'

>>> appuifw.app.title = u'Hello World!'

>>>


Ïoäïècü ïpèëoæeíèÿ.


orientation

Aòpèáyò oòâe÷aeò ça opèeíòaöèþ ýêpaía. Moæeò èìeòü cëeäyþùee çía÷eíèÿ: 'automatic'
(ïo yìoë÷aíèþ), 'portrait' (ïopòpeòíûé peæèì) è 'landscape' (ëaíäøaôòíûé peæèì).
Äaííûé aòpèáyò aêòyaëeí òoëüêo äëÿ cìapòôoíoâ c Symbian 9.

>>> appuifw.app.orientation

'avtomatic'

>>> appuifw.app.orientation = 'portrait'

>>> appuifw.app.orientation = 'landscape'

>>>

Aòpèáyòû êoí÷èëècü, ïepexoäèì ê ìeòoäaì oáúeêòa app:

exit_key_handler()

Ýòoò ìeòoä âûçûâaeòcÿ ïpè íaæaòèè ía ïpaâyþ coôò-êëaâèøy (èìeíío ía íee oáû÷ío
íaæèìaþò äëÿ âûxoäa èç ïpoãpaììû èëè oòìeíû äeécòâèÿ):

>>> def exit():

... if appuifw.query(u"You want exit?", "query")==1:

... appuifw.app.set_exit()

>>> appuifw.app.exit_key_handler = exit

>>>

Teïepü ïoïpoáyéòe íaæaòü ía ïpaâyþ coôò-êëaâèøy. B oáùeì, eìy ìoæeò áûòü
ïpècâoeío èìÿ ëþáoé ôyíêöèè.

focus()

Ýòoò ìeòoä âûçûâaeòcÿ ïpè èçìeíeíèè aêòèâíocòè ïpèëoæeíèÿ: ecëè ïpèëoæeíèe
câopa÷èâaeòcÿ, òo ýòa ôyíêöèÿ âûçûâaeòcÿ c apãyìeíòoì 0, ecëè ïpèëoæeíèe
còaíoâèòcÿ aêòèâíûì - òo c apãyìeíòoì 1:

>>> def call(focus):

... if focus == 1:

... print 'foreground'

... else:

... print 'background'

...

>>> appuifw.app.focus = call

>>>

background

>>>

foreground

>>>

Äëÿ òoão ÷òoáû ïoëy÷èòü òo æe caìoe, ïocëe íaáopa êoäa cía÷aëa câepíèòe Python,
a ïoòoì ïepeéäèòe ê íeìy ÷epeç Äècïeò÷ep çaäa÷.

full_name()

Meòoä âoçâpaùaeò ïoëíûé ïyòü ê òoìy *.app-ôaéëy (ía Symbian 9 áûâaeò è *.exe-ôaéë),
êoòopûé çaïycòèë íaøy *.py-ïpoãpaììy (âûïoëíÿþùyþcÿ â äaííûé ìoìeíò). O÷eíü
yäoáío ècïoëüçoâaòü, êoãäa íeoáxoäèìo ïoëy÷èòü ïyòü ê paáo÷eé ïaïêe ïpoãpaììû:

>>> appuifw.app.full_name()

u'c:systemappsPythonPython.app'

>>>

uid()

Meòoä âoçâpaùaeò UID òoão *.app/*.exe-ôaéëa, êoòopûé çaïycòèë íaøy *.py-ïpoãpaììy
(âûïoëíÿþùyþcÿ ía äaííûé ìoìeíò):

>>> appuifw.app.uid()

u'10201515'

>>>

set_exit()

Meòoä ïpoèçâoäèò íeìeäëeííûé âûxoä èç ïpoãpaììû (ía Nokia 6120 c Symbian 9.2 ýòo
íe cpaáoòaëo - âoçìoæío, è ía äpyãèx òo æe caìoe).

layout(id)

Meòoä âoçâpaùaeò èíôopìaöèþ o paçìepe (ïepâûé êopòeæ) è ïoëoæeíèe (âòopoé êopòeæ)
ýëeìeíòoâ èíòepôeéca: ýêpaía, paçëè÷íûx ïaíeëeé è ò.ä. Koopäèíaòû oòc÷èòûâaþòcÿ
c ëeâoão âepxíeão yãëa. Hyæíaÿ èíôopìaöèÿ âûâoäèòcÿ â çaâècèìocòè oò ïepeìeííoé
id, paçëè÷íûe çía÷eíèÿ êoòopoé ycòaíoâëeíû â ìoäyëe appuifw (ïpeäcòaâëeíû ÷yòü
íèæe). Ôyíêöèÿ äocòyïía òoëüêo ía cìapòôoíax c Symbian 8.1-9.

activate_tab(index) è set_tabs(tab texts[ ,callback=None])

Ècïoëüçyþòcÿ äëÿ coçäaíèÿ âêëaäoê ía ýêpaíe ïpèëoæeíèÿ. Ôyíêöèè áyäyò
paccìoòpeíû ïoçæe â oòäeëüíoé còaòüe.

Èòaê, âce ìeòoäû (è aòpèáyòû òoæe) oáúeêòa app ìû èçy÷èëè. Ïpoäoëæèì
paccìoòpeíèe ìoäyëÿ appuifw è ía÷íeì c ïepeìeííûx, êoòopûe ìoãyò áûòü ïpècâoeíû
ôyíêöèè app.layout(id).

EScreen

Paçìep ýêpaía:

>>> appuifw.app.layout(appuifw.EScreen)

((176, 208), (0, 0))

>>>

EApplicationWindow

×acòü ýêpaía, äocòyïíaÿ äëÿ ïpèëoæeíèé:

>>> appuifw.app.layout(appuifw.EApplicationWindow)

((176, 208), (0, 0))

>>>

EStatusPane

×acòü ýêpaía, ãäe íaxoäÿòcÿ oáùèe ýëeìeíòû äëÿ ïpèëoæeíèé - èêoíêa, íaçâaíèe,
âêëaäêè è ò.ä.:

>>> appuifw.app.layout(appuifw.EStatusPane)

((176, 44), (0, 0))

>>>

EMainPane

×acòü ýêpaía, ãäe pacïoëaãaeòcÿ ãëaâíaÿ ïaíeëü ïpèëoæeíèé (paáo÷aÿ oáëacòü):

>>> appuifw.app.layout(appuifw.EMainPane)

((176, 144), (0, 44))

>>>

EControlPane

×acòü ýêpaía, ãäe íaxoäèòcÿ êoíòpoëüíaÿ ïaíeëü ïpèëoæeíèé (íaäïècè íaä ëeâoé è
ïpaâoé coôò-êëaâèøaìè):

>>> appuifw.app.layout(appuifw.EControlPane)

((176, 20), (0, 188))

>>>

ESignalPane

×acòü ýêpaía, ãäe pacïoëaãaeòcÿ èíäèêaòop ypoâíÿ ceòè:

>>> appuifw.app.layout(appuifw.ESignalPane)

((12, 44), (154, 0))

>>>

EBatteryPane

×acòü ýêpaía, ãäe íaxoäèòcÿ èíäèêaòop ypoâíÿ çapÿäa áaòapeè:

>>> appuifw.app.layout(appuifw.EBatteryPane)

((12, 44), (0, 0))

>>>

EContextPane

×acòü ýêpaía, ãäe íaxoäèòcÿ èêoíêa ïpèëoæeíèÿ:

>>> appuifw.app.layout(appuifw.EContextPane)

((44, 44), (12, 0))

>>>

ETitlePane

×acòü ýêpaía, ãäe pacïoëaãaeòcÿ íaçâaíèe ïpèëoæeíèÿ:

>>> appuifw.app.layout(appuifw.ETitlePane)

((108, 28), (56, 0))

>>>

ENaviPane

×acòü ýêpaía, ãäe pacïoëoæeía íaâèãaöèoííaÿ ïaíeëü (âêëaäêè â Hacòpoéêax,
íaïpèìep):

>>> appuifw.app.layout(appuifw.ENaviPane)

((120, 16), (56, 28))

>>>

EFindPane

×acòü ýêpaía, ãäe íaxoäèòcÿ ïaíeëü ïoècêa (â íèæíeé ÷acòè Koíòaêòoâ, íaïpèìep):

>>> appuifw.app.layout(appuifw.EFindPane)

((176, 31), (0, 157))

>>>

EWallpaperPane

×acòü ýêpaía, ãäe pacïoëoæeíû oáoè (ía paáo÷eì còoëe):

>>> appuifw.app.layout(appuifw.EWalpaperPane)

((174, 143), (1, 45))

>>>

EIndicatorPane

×acòü ýêpaía, ãäe pacïoëaãaþòcÿ èíäèêaòopû íaëè÷èÿ âxoäÿùèx SMS, âêëþ÷eííoão
Bluetooth, ïoäêëþ÷eííoão êaáeëÿ, aêòèâèpoâaííoão áyäèëüíèêa è ò.ä.:

>>> appuifw.app.layout(appuifw.EIndicatorPane)

((113, 12), (63, 44))

>>>

EAColumn

×acòü ýêpaía, êoòopaÿ ècïoëüçyeòcÿ äëÿ oòoápaæeíèÿ ìeëêèx pècyíêoâ è ôëaæêoâ (íaïpèìep,
èêoíêè ôaéëoâ è ïaïoê â Äècïeò÷epe ôaéëoâ):

>>> appuifw.app.layout(appuifw.EAColumnPane)

((20, 144), (0, 44))

>>>

EBColumn

×acòü ýêpaía, êoòopaÿ ècïoëüçyeòcÿ äëÿ oòoápaæeíèÿ cïècêoâ còpoê (íaïpèìep,
èìeía ôaéëoâ è ïaïoê â Äècïeò÷epe ôaéëoâ):

>>> appuifw.app.layout(appuifw.EBColumnPane)

((31, 144), (20, 44))

>>>

ECColumn

×acòü ýêpaía, êoòopaÿ ècïoëüçyeòcÿ äëÿ oòoápaæeíèÿ äaííûx, ââoäèìûe
ïoëüçoâaòeëeì. Ïepeceêaeòcÿ c EDColumn:

>>> appuifw.app.layout(appuifw.ECColumnPane)

((125, 144), (51, 44))

>>>

EDColumn

×acòü ýêpaía, êoòopaÿ ècïoëüçyeòcÿ äëÿ oòoápaæeíèÿ äoïoëíèòeëüíûx èêoíoê.
Ïepeceêaeòcÿ c ECColumn:

>>> appuifw.app.layout(appuifw.EDColumnPane)

((30, 144), (146, 44))

>>>

EStaconTop

Bepxíÿÿ ëeâaÿ ÷acòü ïaíeëè êoíòpoëÿ è còaòyca ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía
(òoëüêo äëÿ Symbian 9).

EStaconBottom

Hèæíÿÿ ïpaâaÿ ÷acòü ïaíeëè êoíòpoëÿ è còaòyca ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía
(òoëüêo äëÿ Symbian 9).

EControlPaneTop

Bepxíÿÿ ëeâaÿ ÷acòü ïaíeëè êoíòpoëÿ ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía:

>>> appuifw.app.layout(appuifw.EControlPaneTop)

((176, 20), (0, 188))

>>>

EControlPaneBottom

Hèæíÿÿ ïpaâaÿ ÷acòü ïaíeëè êoíòpoëÿ ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía (òoëüêo
äëÿ Symbian 9).

EStatusPaneTop

Bepxíÿÿ ëeâaÿ ÷acòü ïaíeëè còaòyca ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía.

>>> appuifw.app.layout(appuifw.EStatusPaneTop)

((176, 44), (0, 0))

>>>

EStatusPaneBottom

Hèæíÿÿ ÷acòü ïaíeëè còaòyca ïpè ëaíäøaôòíoé opèeíòaöèè ýêpaía (òoëüêo äëÿ
Symbian 9).

EUniversalIndicatorPane

×acòü ýêpaía, ãäe pacïoëaãaþòcÿ èíäèêaòopû íaëè÷èÿ âxoäÿùèx SMS, âêëþ÷eííoão
Bluetooth, ïoäêëþ÷eííoão êaáeëÿ, aêòèâèpoâaííoão áyäèëüíèêa è ò.ä. (òoëüêo äëÿ
Symbian 9).

Taê, c ïapaìeòpaìè ôyíêöèè appuifw.app.layout() paçoápaëècü, ïpoäoëæèì
äaëüíeéøee èçy÷eíèe:

Text

Oáúeêò-ïoëe - äëÿ ââoäa, âûâoäa è peäaêòèpoâaíèÿ òeêcòa.

Listbox

Oáúeêò-cïècoê - äëÿ paáoòû co cïècêoì còpoê.

Form

Oáúeêò-ôopìa - ècïoëüçyeòcÿ äëÿ âûâoäa èíôopìaöèè è íacòpoéêè ïpèëoæeíèÿ.

Canvas

Oáúeêò-xoëcò, ía êoòopoì ìoæío pècoâaòü è âûâoäèòü ía íeão êapòèíêè.

Icon

Oáúeêò äëÿ paáoòû c èçoápaæeíèÿìè *.mbm.

Content_handler

Oáúeêò äëÿ oòêpûòèÿ ôaéëoâ paçëè÷íûx òèïoâ.

Èçy÷èì paáoòy c oáúeêòaìè ía ïpèìepe Content_handler. Coçäaeòcÿ oí òaê:

new_name = Content_handler()

Ïocëe coçäaíèÿ ìoæío ècïoëüçoâaòü äâa cëeäyþùèx eão ìeòoäa:

open(filename)

Oòêpûâaeò ôaéë, ïpè÷eì â çaâècèìocòè oò eão òèïa çaïycêaeòcÿ cooòâeòcòâyþùee
ïpèëoæeíèe (íaïpèìep, êapòèíêè oòêpûâaþòcÿ ÷epeç ïpocìoòpùèê èçoápaæeíèé).
Äaííoe ïpèëoæeíèe oòoápaæaeòcÿ â òeêyùeì oêíe, è ïocëe âûxoäa èç íeão paáoòa
ïpoãpaììû ía Python ïpoäoëæaeòcÿ:

>>> content = Content_handler()

>>> content.open(u'c:othersimagemy_image.jpg')

open_standalone(filename)

Aíaëoãè÷eí ïpeäûäyùeé ôyíêöèè, ío ïpèëoæeíèe çaïycêaeòcÿ oòäeëüío è íeçaâècèìo
oò ïpoãpaììû Python.

Ïoäpoáíoe èçy÷eíèe ocòaëüíûx oáúeêòoâ ïepeíocèòcÿ â oòäeëüíûe còaòüè. A ceé÷ac -
ïocëeäíÿÿ oxaïêa öeííûx ïepeìeííûx ìoäyëÿ appuifw:

EEventKeyUp, EEventKeyDown, EEventKey

Ïepeìeííûe, ècïoëüçyeìûe â paáoòe oáúeêòa Canvas äëÿ êoíòpoëÿ íaæaòèé êëaâèø.

FFormAutoFormEdit, FFormAutoLabelEdit, FFormDoubleSpaced, FFormEditModeOnly,
FFormViewModeOnly

Ïepeìeííûe, ècïoëüçyeìûe â paáoòe oáúeêòa Form äëÿ ycòaíoâêè âèäa ýëeìeíòoâ
ôopìû Form.

STYLE_BOLD, STYLE_ITALIC, STYLE_STRIKETHROUGH, STYLE_UNDERLINE, HIGHLIGHT_STANDARD,
HIGHLIGHT_ROUNDED, HIGHLIGHT_SHADOW

Ïepeìeííûe, ècïoëüçyeìûe â paáoòe oáúeêòa Text äëÿ ôopìaòèpoâaíèÿ òeêcòa.

Bce ýòè ïepeìeííûe áyäyò paccìoòpeíû ïoçæe, êaæäûé â câoeé còaòüe.
Beëèêoìy è ìoãy÷eìy ïocâÿùaeòcÿ

Cyùecòâyeò oäèí òèï äaííûx, êoòopûé ÿâëÿeòcÿ paçíoâèäíocòüþ còpoê - còpoêè
Unicode (Þíèêoä). Oíè ïpeäocòaâëÿþò âoçìoæíocòü ècïoëüçoâaòü oäíoâpeìeíío áyêâû
è cèìâoëû èç íecêoëüêèx ÿçûêoâ, â òoì ÷ècëe è pyccêoão. T.e. èìeíío còpoêè
Unicode äaäyò âoçìoæíocòü "ãoâopèòü" âaøeé ïpoãpaììe ía poäíoì ÿçûêe!

Ýòè còpoêè ïoëíocòüþ aíaëoãè÷íû oáû÷íûì còpoêaì, ío ía÷èíaþòcÿ c áyêâû "u" è
coäepæaò yïpaâëÿþùèe cèìâoëû, êaæäûé èç êoòopûx oçía÷aeò oäèí cèìâoë:

>>> text = u'u0423u0440u0430! u042f u0433u043eu0432u043eu0440u044e u043fu043e u0440u0443u0441u0441u043au043eu043c!'

>>> print text

Ópa! ß ãoâopþ ía pyccêoì!

>>>

ß äaì òaáëèöy, â êoòopoé ïpeäcòaâëeío cooòâeòcòâèe ìeæäy áyêâaìè pyccêoão
aëôaâèòa è èx yïpaâëÿþùèìè cèìâoëaìè. Ho òaêæe oïèøy áoëee ïpocòoé cïocoá, êaê
ïoëy÷èòü èç còpoêè ía pyccêoì ïocëeäoâaòeëüíocòü yïpaâëÿþùèx cèìâoëoâ. Äëÿ ýòoão
ìû ècïoëüçyeì ìoäyëü appuifw. Oí coäepæèò ôyíêöèþ query äëÿ ââoäa äaííûx.
Ócòaíaâëèâaÿ eão âòopoé ïapaìeòp êaê "text", ìû cìoæeì ââoäèòü òeêcòoâûe äaííûe,
ïpè ýòoì oápaòío ôyíêöèÿ âepíeò còpoêy â ôopìaòe Unicode:

>>> import appuifw

>>> appuifw.query(u'Text:','text')a u0430 ë u043b ö u0446 A u0410 Ë u041b Ö u0426
á u0431 ì u043c ÷ u0447 Á u0411 M u041c × u0427
â u0432 í u043d ø u0448 B u0412 H u041d Ø u0428
ã u0433 o u043e ù u0449 Ã u0413 O u041e Ù u0429
ä u0434 ï u043f ú u044a Ä u0414 Ï u041f ú u042a
e u0435 p u0440 û u044b E u0415 P u0420 û u042b
æ u0436 c u0441 ü u044c Æ u0416 C u0421 ü u042c
ç u0437 ò u0442 ý u044d Ç u0417 T u0422 Ý u042d
è u0438 y u0443 þ u044e È u0418 Ó u0423 Þ u042e
é u0439 ô u0444 ÿ u044f É u0419 Ô u0424 ß u042f
ê u043a x u0445 K u041a X u0425




Taê êaê ïepâûe 128 cèìâoëoâ Unicode coâïaäaþò c êoäèpoâêoé ASC-II, òo
íeoáxoäèìocòü ècïoëüçoâaíèÿ yïpaâëÿþùèx cèìâoëoâ äëÿ áyêâ ëaòèícêoão aëôaâèòa è
çíaêoâ ïpeïèíaíèÿ oòïaäaeò.

Kaê, íaâepío, yæe çaìeòèëè, áoëüøèícòâo ôyíêöèé, íaïècaííûx cïeöèaëüío ïoä
cècòeìy Symbian (èç ìoäyëÿ appuifw, íaïpèìep), ïpèíèìaþò è oòäaþò còpoêè Unicode.
Äaæe ecëè òaì òoëüêo áyêâû ëaòèícêoão aëôaâèòa, âce paâío ýòa còpoêa â ía÷aëe
áyäeò èìeòü áyêây "u".

Èìeíío äëÿ ýòèx cëy÷aeâ cyùecòâyeò ôyíêöèÿ unicode() äëÿ ïpeoápaçoâaíèÿ ëþáûx
äaííûx, áyäü òo ÷ècëo, cïècoê èëè oáû÷íaÿ còpoêa, â còpoêy Unicode. Ïpè paáoòe c
appuifw oí ÿâëÿeòcÿ íeçaìeíèìûì ïoìoùíèêoì:

>>> number = 5/2

>>> appuifw.note(unicode(number))

>>> list = range(1,4)

>>> appuifw.note(unicode(list))

>>>

Boò òeïepü ìû yìeeì ècïoëüçoâaòü pyccêèé ÿçûê â câoèx ïpoãpaììax!Interface.py:

Bìecòe co còaòüeé òaêæe èäeò ïpèìep Interface.py, â êoòopoì ïpeäcòaâëeía paáoòa
áoëüøèícòâa ôyíêöèé èç ìoäyëÿ appuifw. Ïpocòo âûáèpaéòe èç ìeíþ Ôyíêöèè íyæíûé
ïyíêò è cìoòpèòe peçyëüòaò paáoòû. He ïoìeøaeò ïpocìoòpeòü caì êoä, ãäe âce, ÷òo
ìoæío, cäeëaío ía pyccêoì.

Ócòaíoâêa:

- êoïèpyéòe ïpoãpaììy ía òeëeôoí ëþáûì yäoáíûì cïocoáoì;

- oòêpûâaeòe eão ÷epeç Äècïeò÷ep ôaéëoâ;

- çaïycòèòcÿ ïpèëoæeíèe äëÿ ycòaíoâêè *.py ïpoãpaìì - Python installer;

- âûáèpaéòe ïyíêò Python script, ïpoãpaììa cêoïèpyeò ôaéë â paáo÷yþ ïaïêy ('!:systemappsPythonmy'
äëÿ Symbian 6-8 è '!ython' äëÿ Symbian 9);

- òeïepü ïpoãpaììy ìoæío çaïycòèòü ÷epeç caì Python.

Óäa÷è!

Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü Yerdna; 05.04.2009 â 18:09..
  Îòâåòèòü ñ öèòèðîâàíèåì
 
Âðåìÿ ãåíåðàöèè ñòðàíèöû 0.15250 ñåêóíäû ñ 10 çàïðîñàìè