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

Python ía Symbian S60 cïècêè è oáúeêò Listbox

Oáúeêò Listbox - ýòo ïoëe co cïècêoì còpoê. Ïpoãpaììècò ìoæeò äoïoëíèòü eão:
cäeëaòü ìeíþ "Ôyíêöèè" èëè ïpèâÿçaòü ê íaæaòèÿì ía êëaâèøè oïpeäeëeííûe coáûòèÿ.
Coçäaeòcÿ è aêòèâèpyeòcÿ oáúeêò òaê æe, êaê è Text, ïpè ýòoì eìy ïepeäaþòcÿ äâa
apãyìeíòa - cïècoê còpoê è èìÿ ôyíêöèè:
>>> list = [u'Symbian', u'Windows Mobile', u'Linux', u'Palm']
>>> def callback():
... pass
...
>>> import appuifw
>>> appuifw.app.body = body = appuifw.Listbox(list, callback)
>>>

Paçáepeì êoä. Oáúeêò íaxoäèòcÿ â ìoäyëe appuifw, êoòopûé ïoäêëþ÷aeòcÿ c ïoìoùüþ
êoìaíäû import. Listbox ïpècâaèâaeòcÿ aòpèáyòy app.body ("òeëo" ïpoãpaììû).
Cïècoê list coäepæèò còpoêè Unicode, êoòopûe è âûâoäÿòcÿ ía ýêpaí. callback
áyäeò âûçûâaòücÿ êaæäûé paç ïpè íaæaòèè ía äæoécòèê.
Äëÿ coçäaíèÿ äâyxypoâíeâoão cïècêa íeoáxoäèìo yêaçaòü cïècoê êopòeæeé, êaæäûé èç
êoòopûx cocòoèò èç 2-x còpoê Unicode: ïepâûé oòâe÷aeò ça âepxíèé (êpyïíûì
øpèôòoì) ypoâeíü, âòopoé - ça íèæíèé (ìeëêèì øpèôòoì). Oáùèé âèä: [(item1, item1_description),
(item2, item2_description),..., (itemN, itemN_description)]:
>>> list = [
(u'Symbian', u'Siemens SX1, Nokia N70'),
(u'Windows Mobile', u'E-Ten G500, HPiPAQrx1950')]
>>> def callback():
... pass
...
>>> import appuifw
>>> appuifw.app.body = body = appuifw.Listbox(list, callback)
>>>
Meòoäû oáúeêòa
bind(event_code, callback)
Ïpèâÿçûâaeò çaïycê ôyíêöèè callback ê íaæaòèþ ía êëaâèøy c êoäoì event_code
current()
Boçâpaùaeò íoìep aêòèâíoé còpoêè (ò.e. òa, êoòopaÿ âûäeëeía ía äaííûé ìoìeíò).
set_list(list [,current])
Ócòaíaâëèâaeò íoâûé cïècoê list c yæe aêòèâíoé còpoêoé current (ecëè oòcyòcòâyeò,
òo aêòèâía ïepâaÿ còpoêa).
Ceé÷ac æe ïoäpoáío paccìoòpþ yæe èçâecòíûé òèï äaííûx - cïècoê.
Coçäaíèe è èçìeíeíèe cïècêa
B ïepâûx còaòüÿx ÿ paccêaçaë, ÷òo cïècêè ècïoëüçyþòcÿ äëÿ ãpyïïèpoâêè çía÷eíèé (ýëeìeíòoâ),
paçäeëeííûx çaïÿòûìè è çaêëþ÷eííûìè â êâaäpaòíûe cêoáêè:
>>> list = [1, 2, 3]
>>>
Ýëeìeíòû cïècêa ìoãyò áûòü paçíoão òèïa:
>>> list = [1, 'Two', 3.0, ['One', 2.0, 3]]
>>>
Cïècêè ìoæío cêëaäûâaòü êaê ÷ècëa (ò.e. oáúeäèíÿòü èx):
>>> [1, 'Two', 3.0] ['One', 2.0, 3]
[1, 'One', 'Two', 2.0, 3.0, 3]
>>>
Oápaùeíèe ê ýëeìeíòaì cïècêa ïpoèçâoäèòcÿ ïo èíäeêcaì ýëeìeíòoâ. Ïpè ýòoì
íyìepaöèÿ cïècêoâ èäeò c íyëÿ:
>>> list = [1, 'Two', 3.0]
>>> list[0]
1
>>>
Ecëè èíäeêc ìeíüøe íyëÿ, òo ïpoècxoäèò oòc÷eò c êoíöa cïècêa:
>>> list = [1, 'Two', 3.0]
>>> list[-2]
'Two'
>>>
Moæío ïoëy÷èòü cpeç cïècêa paçëè÷íûìè cïocoáaìè:
>>> list = [1, 'Two', 3.0, 4]
>>> list[0:2]
['Two', 3.0]
>>> list[:2]
['Two', 3.0]
>>> list[-2:]
[4, 5]
>>> list[1:3]
['Two', 3.0]
>>> list[-3:-1]
[3.0, 4]
>>> list[:2] list[3:]
[1, 'Two', 4, 5]
>>>
B oòëè÷èe oò còpoê, ýëeìeíòû cïècêa ìoæío èçìeíÿòü:
>>> list = [1, 'Two', 3.0]
>>> list[1]=2
>>> list[2]=3
>>> list
[1, 2, 3]
>>>
Ïpè÷eì ècïoëüçoâaòü â êa÷ecòâe íoâoão ýëeìeíòa äpyãoé cïècoê:
>>> list = [1, 'Two', 3.0]
>>> list[1:2] = [2,3]
>>> list
[1, 2, 3]
>>> list = [1, 2, 3, 4, 5]
>>> list [1:3] = []
>>> list
[1, 5]
>>>
Bcòpoeííaÿ ôyíêöèÿ len() oïpeäeëÿeò äëèíy cïècêa, a oïepaòop del yäaëÿeò ýëeìeíò
ïo èíäeêcy èëè cpeçy (ecëè oí yêaçaí):
>>> list = [1, 2, 3, 4, 5]
>>> len(list)
5
>>> del list[2]
>>> list
[1, 2, 4, 5]
>>> del [1:3]
>>> list
[1, 5]
>>> len(list)
2
>>>
Meòoäû cïècêoâ
append(x)
Äoáaâëÿeò ýëeìeíò x â êoíeö cïècêa:
>>> list = [1, 2.0]
>>> list.append('Three')
>>> list
[1, 2.0. 'Three']
>>>
extend(t)
Äoáaâëÿeò ýëeìeíòû ïocëeäoâaòeëüíocòè t â êoíeö cïècêa (ò.e. oáúeäèíÿeò èx):
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6]
>>>
count(x)
Boçâpaùaeò êoëè÷ecòâo ýëeìeíòoâ â cïècêe co çía÷eíèeì x (ò.e. ïepeáèpaeò âecü
cïècoê è oïpeäeëÿeò, cêoëüêo paç âcòpe÷aeòcÿ ýëeìeíò x):
>>> list = [1, 3, 3, 4]
>>> list.count(3)
2
>>> list.count(4)
1
>>>
index(x)
Boçâpaùaeò íaèìeíüøèé èíäeêc ýëeìeíòa x â cïècêe, ecëè òaêoão ýëeìeíòa íeò â
cïècêe, ïpoèçoéäeò oøèáêa):
>>> list = [1, 2, 4, 3]
>>> list.index(4)
2
>>> list[2]
4
>>>
insert(i, x)
Bcòaâëÿeò â cïècoê ýëeìeíò x ïepeä i-ûì ýëeìeíòoì, ecëè i ìeíüøe íyëÿ, òo x
âcòaâëÿeòcÿ â ía÷aëo, ecëè i áoëüøe äëèíû cïècêa - â êoíeö):
>>> list = [1, 3]
>>> list.insert(1, 2)
>>> list
[1, 2, 3]
>>> list.insert(9, 4)
>>> list
[1, 2, 3, 4]
>>> list.insert(-5, 0)
>>> list
[0, 1, 2, 3, 4]
>>>
pop(i)
Boçâpaùaeò i-ûé ýëeìeíò c oäíoâpeìeííûì yäaëeíèeì, ecëè i íe yêaçaí, òo
ïoäpaçyìeâaeòcÿ ïocëeäíèé ýëeìeíò:
>>> list = [1, 2, 3, 4]
>>> list.pop(0)
1
>>> list
[2, 3, 4]
>>> list.pop()
4
>>> list
[2, 3]
>>>
remove(x)
Óäaëÿeò èç cïècêa ïepâûé ýëeìeíò co çía÷eíèeì x, ecëè òaêoão çía÷eíèÿ íeò, òo
ïpoèçoéäeò oøèáêa:
>>> list = [1, 2, 3, 3, 4]
>>> list.remove(3)
>>> list
[1, 2, 3, 4]
>>>
sort()
Copòèpyeò cïècoê (oò 1 äo 9, oò "a" äo "z" è ò.ä.):
>>> list = [2, 1, 3, 'g', 'a']
>>> list.sort()
>>> list
[1, 2, 3, 'a','g']
>>>
reverse()
Copòèpyeò cïècoê â oápaòíoì ïopÿäêe:
>>> list = [1, 2, 3]
>>> list.reverse()
>>> list
[3, 2, 1]
>>>
Kpoìe oáû÷íûx cïocoáoâ, Python ïpeäocòaâëÿeò äoïoëíèòeëüíûe âoçìoæíocòè ïpè
êoícòpyèpoâaíèè cïècêoâ:
>>> [index for index in range(9) if index>5]
[6, 7, 8]
>>>
Pacøèôpyþ:
1) â öeíòpe íaxoäèòcÿ öèêë for, êoòopûé ïepeáèpaeò ïocëeäoâaòeëüíocòü (cïècoê,
êopòeæ, còpoêa), èäyùyþ ïocëe oïepaòopa in;
2) cëeâa íaxoäÿòcÿ âûpaæeíèÿ, oápaáaòûâaþùèe ýëeìeíòû ïocëeäoâaòeëüíocòè;
3) cïpaâa íaxoäÿòcÿ ycëoâíûe âûpaæeíèÿ, êoòopûe ôèëüòpyþò ýëeìeíòû, íe
yäoâëeòâopÿþùèe ycëoâèþ (íeoáÿçaòeëüíaÿ ÷acòü).
Ýòo o÷eíü yäoáío, êoãäa íyæío áûcòpo coçäaòü èëè oòcopòèpoâaòü cïècoê ïo ycëoâèþ.
Ècïoëüçoâaíèe oáû÷íoão öèêëa ïpèâeëo áû ê íaïècaíèþ òaêoão êoäa:
>>> list = []
>>> for index in range(9):
... if index > 5:
... list.append(index)
...
>>> list
[6, 7, 8]
>>>
Paáoòa c êopòeæaìè
Kopòeæè coçäaþòcÿ c ïoìoùüþ oáû÷íoão ïepe÷ècëeíèÿ ýëeìeíòoâ ÷epeç çaïÿòyþ, ïpè
ýòoì ýëeìeíòû ìoãyò áûòü paçëè÷íûx òèïoâ äaííûx. Ó êopòeæeé ìoæío ïoëy÷aòü
çía÷eíèÿ ýëeìeíòoâ ïo èíäeêcy, äocòyïío ècïoëüçoâaíèe cpeçoâ è oòpèöaòeëüíûx
èíäeêcoâ. Ho êopòeæ èçìeíèòü íeëüçÿ, ê òoìy æe y íèx íeò íè oäíoão ìeòoäa:
>>> tuple = (1, 2.0, 'Three')
>>> tuple[2]
'Three'
>>> tuple[:-1]
(1, 2.0)
>>> len(tuple)
3
>>>
Kopòeæ, cocòoÿùèé èç oäíoão ýëeìeíòa, coçäaeòcÿ òaê:
>>> tuple = (1,)
>>> tuple
(1,)
>>>.
×òoáû çaêpeïèòü òeopèþ paáoòû co cïècêaìè, ÿ íaïècaë oáy÷aþùyþ ïpoãpaììy. Kaê è
â ïpoøëûé paç, oáúÿcíþ còpyêòypy ïpoãpaììû è paáoòy íeêoòopûx ôyíêöèé ïpÿìo â
còaòüe (äëÿ áoëüøoé ÿcíocòè). Ïpoãpaììa íaçûâaeòcÿ ListBox.py è ïpeäíaçía÷eía
äëÿ èíòepaêòèâíoé paáoòû co cïècêaìè, ècïoëüçyþòcÿ âoçìoæíocòè oáúeêòa Listbox.
ListBox.py
Ôyíêöèoíaë ïpoãpaììû còpoèòcÿ ía ocíoâe ìeòoäoâ cïècêa:
1) äoáaâèòü ýëeìeíò;
2) copòèpoâaòü cïècoê;
3) ïpocìoòpeòü ïocëeäíèé ýëeìeíò è yäaëèòü eão;
4) yäaëèòü ýëeìeíò ïo èìeíè;
5) yäaëèòü âûäeëeííûé ýëeìeíò èç cïècêa;
6) íaéòè ýëeìeíò ïo èìeíè.
B ía÷aëe ïpoãpaììû coçäaeì cïècoê, êoòopûé áyäeò ïoäoïûòíûì êpoëèêoì. Çaòeì èäeò
oïècaíèe âcex ôyíêöèè. B êoíöe ïpeäcòaâëeío íecêoëüêo áëoêoâ êoäa.
Bo-ïepâûx, coçäaeì oáúeêò Listbox, êoòopûé ïpècâaèâaeì ïepeìeííoé listbox (ècïoëüçoâaòü
ýòy ïepeìeííyþ â ôyíêöèÿx yäoáíee, ÷eì ãpoìoçäêyþ êoícòpyêöèþ appuifw.app.body).
Ïpè coçäaíèè ïepeäaeì oáúeêòy äâa apãyìeíòa: ía÷aëüíûé cïècoê (ïoêaçûâaeò
êoëè÷ecòâo ýëeìeíòoâ â cïècêe) è èìÿ ôyíêöèè info (âûçûâaeò ïpè êaæäoì íaæaòèè
ía äæoécòèê). Taêæe ïpèâÿçûâaeì c ïoìoùüþ ìeòoäa bind âûçoâ ôyíêöèè delete ía
êëaâèøy "C":
appuifw.app.body = listbox = appuifw.Listbox([u'Ýëeìeíòoâ: 0'],info)
listbox.bind(key_codes.EKeyBackspace, delete)
Bo-âòopûx, oïècûâaeì ìeíþ "Ôyíêöèè":
appuifw.app.menu = [
(u'Äoáèâaòü', append),
(u'Copòèpoâaòü', sort),
(u'Bepíyòü', pop),
(u'Óäaëèòü', remove),
(u'Haéòè, index),
(u'Bûxoä', exit)]
B-òpeòüèx, ïpèâoäèì êoä (yæe èçâecòíûé ïo ïpoãpaììe TextBox.py) äëÿ ïpoâepêè
òoão, oòêyäa çaïyùeía ïpoãpaììa: èç êoícoëè èëè êaê caìocòoÿòeëüíoe ïpèëoæeíèe.
Teïepü oïèøeì ôyíêöèè ïpoãpaììû. Oápaòèòe âíèìaíèe ía êoìaíäy global, êoòopaÿ
äaeò âoçìoæíocòü ècïoëüçoâaòü ãëoáaëüíyþ ïepeìeííyþ list âíyòpè òeëa ôyíêöèè.
def info():
global list
index=listbox.current()
if index>0:
appuifw.note(list[index-1])
Ôyíêöèÿ âûçûâaeòcÿ ïpè íaæaòèè ía äæoécòèê è âûâoäèò èìÿ òoão ýëeìeíòa, êoòopûé
âûäeëeí:
1) ïoëy÷aeì íoìep âûäeëeííoé còpoêè;
2) ecëè íoìep áoëüøe íyëÿ (íyëeâoé ýëeìeíò - ýòo íaäïècü c êoëè÷ecòâoì ýëeìeíòoâ),
òo èíèöèèpyeì âcïëûâaþùee oêoøêo c eão èìeíeì â cïècêe.
def create():
global list
index=listbox.current()
number=[u'Ýëeìeíòoâ: ' unicode(len(list))]
listbox.set_list(number list, index)
Oáùaÿ ôyíêöèÿ, êoòopaÿ âûçûâaeòcÿ äëÿ oáíoâëeíèÿ oáúeêòa Listbox:
1) coxpaíÿeì íoìep âûäeëeííoé còpoêè;
2) coçäaeì ïepeìeííyþ, coäepæaùyþ còpoêy c êoëè÷ecòâoì ýëeìeíòoâ â cïècêe;
3) oáíoâëÿeì oáúeêò Listbox, ïepeäaâ eìy íoâûé cïècoê è còapoe pacïoëoæeíèe
êypcopa (ecëè ýòo íe cäeëaòü, òo êypcop aâòoìaòè÷ecêè ïepeìecòèòcÿ ía ía÷aëo).
def delete():
global list
index=listbox.current()
if index>0:
del list[index-1]
create()
Ôyíêöèÿ yäaëÿeò âûäeëeííûé ýëeìeíò cïècêa:
1) ïoëy÷aeì íoìep âûäeëeííoão ýëeìeíòa;
2) ecëè oí áoëüøe íyëÿ, òo yäaëÿeì ýëeìeíò èç cïècêa;
3) oáíoâëÿeì oáúeêò Listbox.
def append():
global list
text=appuifw.query(u'Bâeäèòe èìÿ ýëeìeíòa:', 'text', u'Áeçûìÿííûé')
if len(text)>=0:
list.append(text)
create()
Ôyíêöèÿ äoáaâëÿeò â êoíeö cïècêa íoâûé ýëeìeíò:
1) ïoëy÷aeì oò ïoëüçoâaòeëÿ èìÿ íoâoão ýëeìeíòa (ïo yìoë÷aíèþ "Áeçûìÿííûé");
2) ecëè èìÿ ââeäeío, òo äoáaâëÿeì â êoíeö cïècêa íoâûé ýëeìeíò;
3) oáíoâëÿeì oáúeêò Listbox.
def pop():
global list
element=list.pop()
appuifw.note(u'Ýëeìeíò ' element u' yäaëeí.')
create()
Ôyíêöèÿ:
1) ïoëy÷aeò ïocëeäíèé ýëeìeíò èç cïècêa;
2) èíèöèèpyeò âcïëûâaþùee oêoøêo c ýòèì ýëeìeíòoì;
3) oáíoâëÿeò oáúeêò Listbox.
def remove():
global list
text=appuifw.query(u'Bâeäèòe èìÿ yäaëÿeìoão ýëeìeíòa:', 'text', u'Áeçûìÿííûé')
if len(text)>=0:
try:
list.remove(text)
except:
appuifw.note(u'Ýëeìeíòa c òaêèì èìeíeì íeò.','error')
else:
create()
Ôyíêöèÿ yäaëÿeò ýëeìeíò ïo eão èìeíè:
1) ïoëy÷aeì oò ïoëüçoâaòeëÿ èìÿ ýëeìeíòa (ïo yìoë÷aíèþ "Áeçûìÿííûé");
2) ecëè èìÿ ââeäeío, òo yäaëÿeì eão èç cïècêa;
3) ecëè òaêoão èìeíè â cïècêe íeò, òo cooáùaeì ïoëüçoâaòeëþ oá ýòoì;
4) èía÷e oáíoâëÿeì oáúeêò Listbox.
def sort():
global list
list.sort()
create()
Ôyíêöèÿ copòèpyeò cïècoê è oáíoâëÿeò oáúeêò Listbox.
def index():
global list
text=appuifw.query(u'Bâeäèòe èìÿ ýëeìeíòa:', 'text', u'Áeçûìÿííûé')
if len(text)>=0:
try:
index=list.index(text)
except:
appuifw.note(u'Taêoão ýëeìeíòa íeò.','error')
else:
number=[u'Ýëeìeíòoâ: ' unicode(len(list))]
listbox.set_list(number list, index 1)
Ôyíêöèÿ äëÿ ïoècêa ýëeìeíòa ïo eão èìeíè:
1) ïoëy÷aeì oò ïoëüçoâaòeëÿ èìÿ ýëeìeíòa;
2) ecëè èìÿ áûëo ââeäeío, òo oïpeäeëÿeì èìÿ ýëeìeíòa â cïècêe;
3) â cëy÷ae íeyäa÷è èíôopìèpyeì ïoëüçoâaòeëÿ oá oøèáêe;
4) èía÷e oáíoâëÿeì oáúeêò Listbox c âûäeëeíèeì òoé còpoêè, ãäe pacïoëoæeí
ècêoìûé ýëeìeíò.
  Îòâåòèòü ñ öèòèðîâàíèåì
 
Âðåìÿ ãåíåðàöèè ñòðàíèöû 0.08318 ñåêóíäû ñ 9 çàïðîñàìè