Думаю, многие с таким встречались.
Вот код, моделирующий проблему:
from graphics import Image
import appuifw2 as aw
canvas = aw.Canvas()
list = [u'Item1', u'Item2']
def func_listbox():
. . . . aw.note(u'funclb')
def listbox():
. . . . def current():
. . . . . . . . func_listbox()
. . . . aw.app.body = aw.Listbox(list, current)
def canv():
. . . . aw.app.body = canvas
. . . . canvas.bind(63557, listbox)
canv()
lock = aw.e32.Ao_lock()
aw.app.exit_key_handler = lock.signal
lock.wait()
при нажатии по центру вызывается функция def listbox(), телом становится aw.Listbox(..). Но вот запара: тут же следом вызывается и функция func_listbox(), как-будто еще раз нажали по-центру уже в листбоксе. Выход:
1. Убрать из аргументов, передаваемых классу Listbox, вызываемую функцию;
2. Забиндить клавишу по-центру на эту функцию.
Вот как будет выглядеть функция listbox:
def listbox():
. . . . def current():
. . . . . . . . func_listbox()
. . . . aw.app.body = lb = aw.Listbox(list)
. . . . lb.bind(63557, current)
#The end =)
-------------
добавлено в 21.26: graphics не нужен здесь конечно =). Прицепился, зараза, при копировании импортов =D