Статья будет полезна новичкам!
Решил написать эту статью отчасти потому, что нашел это: Делаем настройки к программе на python и мне стало жалко тех, кто будет это использовать...
Ниже представлен код небольшой программы, использующей модуль prodb и реализующей простейшее меню настройки программы на примере изменения надписи заголовка программы.
# Импортируем необходимые модули
import appuifw2, prodb, os, e32
# Немного магии...
def ru(x):return x.decode("utf-8")
# Устанавливаем путь до файла с настройками
setspath='D:settings.txt'
# Проверяем наличие файла настроек. Если функция os.path.exists() возвращает False, создаем файл с помощью модуля prodb и записываем в него переменную DISP, значение которой по умолчанию: Hello world!.
if os.path.exists(setspath):
pass
else:
SET=prodb.set(setspath, load=0, save=0)
SET.DISP='Hello world'
SET.save()
# Это функция, которая будет запрашивать из файла текущее значение переменой DISP и присваивать ее значению заголовка программы.
def remain():
# Вводим глобальную переменную SET
global SET
# Присваиваем ей значения из файла
SET=prodb.set(setspath)
# Устанавливаем нужное значения в качестве заголовка
appuifw2.app.title = SET.DISP
# Собственно сама функция настройки. Построена она на методе Listbox2 (имхо так удобнее).
def settings():
# Вызываем функцию обновления надписи
remain()
# Далее код составления листбокса я описывать не буду, так как документации на эту тему вагон
items=[appuifw2.Item(title=ru('Имя заголовка:'), subtitle=SET.DISP)]
menu=appuifw2.app.body=appuifw2.Listbox2(items=[], select_callback=click, double=1, icons=0)
menu.extend(items)
try:
menu.set_current(index)
except:
menu.set_current(0)
# Функция обрабатывающая выбор пункта из меню листбокса
# Переменной index присваивается глобальное значение для того чтобы в дальнейшем при обновлении списка пунктов листбокса курсор становился на последний выбранный пункт меню.
def click():
global index
index=appuifw2.app.body.current()
if index==0: edit_disp()
# Функция запрашивает текст заголовка и записывает введенное значение в файл
def edit_disp():
disp=appuifw2.query(ru('Введите текст заголовка:'), 'text', SET.DISP)
# Проверка на вшивость...
if disp==None:
return
else:
# Записываем переменную в файл
SET.DISP=disp
# Обновляем окно настроек
settings()
settings()
e32.Ao_lock().wait()
Внимание! Все переменные из prodb пишутся в верхнем регистре!
Удачных вам настроек
Прикрепленный файл #2: 4022_settings_instr.zip (1, 49 Kb)
Источник новости:
Спасибо немного эх нехватало подобного чуточку раньше.
0 ответить