Форум сайта python.su
Реально ли как нибудь заменить подписи софткеев в menu? Если нет, то есть ли аналоги (кроме listbox и listbox2)?
Офлайн
Как-то так:
appuifw2.app.exit_key_text = u"Right" # Правый софткей
appuifw2.app.menu_key_text = u"Left" # Левый софткей
Офлайн
Пробовал уже. Именно что когда делаешь menu.popup() это не работает.
Офлайн
import e32, appuifw2
from _appuifw2 import command_text
from appuifw2 import Menu, Item
EAknSoftkeyOk = -2
EAknSoftkeyBack = 3001
def popup_menu(menu, label1=None, label2=None):
try:
if label1 is not None:
f = lambda: command_text(EAknSoftkeyOk, label1)
e32.ao_sleep(0.1, f)
if label2 is not None:
f = lambda: command_text(EAknSoftkeyBack, label2)
e32.ao_sleep(0.1, f)
except:
pass
menu.popup()
# Проверка
menu = Menu()
menu.extend([Item(u"Item1"), Item(u"Item2")])
popup_menu(menu, u"Left", u"Right")
Отредактировано (Март 20, 2011 11:54:01)
Офлайн
Левая заменяется. Правая - KErrNotFound.
Офлайн
На правой написано “Назад” или нет?
Офлайн
На правой написано Cancel. Python 1.4.5 и s60v5, Nokia5800XM.
А вообще спасибо огромное за пример. Как я понял нужно вместо EAknSoftkeyBack нужное значение поставить?
Офлайн
В функции _appuifw2.command_text() первым аргументом указываеться, тип софткея, текст которого надо заменить. Причем софткей должен быть на экране в момент вызова функции, иначе генерируеться исключение KErrNotFound.
EAknSoftkeyCancel = -1
Отредактировано (Март 20, 2011 22:23:16)
Офлайн