Python на Symbian S60: объект Text, строки +пример TextBox.py

Объект Text представляет текстовое поле для ввода текста. Над текстом можно совершать простейшие операции: удалять (клавиша «C») и копировать/вставлять (удерживание клавиши «карандаш»). Не хватает только возможности изменения языка ввода (используется английский). Программист может усовершенствовать поле: сделать меню Функции, привязать к нажатиям на клавиши определенные события. Интерактивная консоль самого Python  – модифицированный вариант объекта Text, в ней наличествует меню, по нажатию на джойстик выполняется введенная команда.

Скачать пример TextBox.py

Создание объекта

Создается текстовое поле следующим способом:

>>> import  appuifw

>>> appuifw.app.body = body = appuifw.Text()

>>>

Объект находится в модуле appuifw, который подключаем к программе с помощью операции import. При этом новосозданный объект Text() становится текущим пользовательским интерфейсом (appuifw.app.body) – «телом» программы. Также при создании поля можно указать первоначальный текст. Облегчить способ обращения к созданному объекту можно, используя множественное присваивание:

>>> appuifw.app.body = Text = appuifw.Text(u’Hello!’)

>>>

Создаем текстовое поле Text.

Заметьте, весь текст должен быть в Unicode, т.е. можно вводить и выводить информацию на русском.

Методы и атрибуты объекта

Как и большинство объектов, Text имеет методы:

add(text)

Добавляет текст text после курсора.

>>> body.add(u’appuifw - Interface to the S60 GUI framework.’)

>>>

len()

Возвращает длину всего текста.

>>> body.len()

45

>>>

set(text)

Очищает поле и устанавливает его как text.

>>> body.set(u‘Wait…’)

>>> body.get()

u’Wait…’

>>>

get([pos = 0 ,length=len()])

Возвращает участок текста от позиции курсора pos и длиной length. По умолчанию pos равен нулю (начало текста), а length равен длине текста. Т.е. при вызове этого метода без аргументов возвращается весь текст.

>>> body.get()

u’appuifw - Interface to the S60 GUI framework.’

>>> body.get(10,19)

u’Interface’

>>>

delete([pos = 0 ,length=len()])

Удаляет участок текста от позиции курсора pos и длиной length. По умолчанию pos равен нулю (начало текста), а length равен длине текста. Т.е. при вызове этого метода без аргументов удаляется весь текст.

>>> body.delete(10,27)

>>> body.get()

u’appuifw - S60 GUI framework.’

>>>

clear()

Очищает текстовое поле.

>>> body.clear()

>>> body.get()

u’’

>>>

set_pos(pos)

Устанавливает текущую позицию курсора.

>>> body.set_pos(2)

>>> body.get_pos()

2

>>>

get_pos()

Возвращает текущую позицию курсора.

>>> body.get_pos()

7

>>>

bind(event_code, callback)

Привязывает к нажатию клавиши с кодом event_code вызов функции по имени callback. Как можно узнать код той или иной клавиши, будет сказано ближе к концу статьи.

Теперь перейдем к атрибутам объекта Text():

focus

Определяет, будет ли виден курсор. По умолчанию – True (т.е. виден мигающий курсор). Если ему присвоить значение False, то он перестанет быть видимым. На проведение операции (ввод, копирование) это никак не влияет.

font

Определяет шрифт выводимого текста:

>>> def fonts():

…          appuifw.app.body = body = appuifw.Text(u’Fonts:\n’)

…          for font in appuifw.available_fonts():

…               body.font = font

…               body.add(font+u’\n’)

>>> fonts()

>>>

Результат работы функции fonts() – шрифты.

Примечание: мы использовали управляющий символ «\n» для того, чтобы каждая строка выводилась с новой строки.

color

Определяет цвет выводимого текста в виде кортежа из трех чисел (так называемая RGB): красная составляющая цвета, голубая и зеленая:

>>> def colors():

…       appuifw.app.body = body = appuifw.Text(u’Colors:\n’)

…       body.color = (0, 0, 0)

…       body.add(u’Black: (0, 0, 0)‘)

…       body.color = (255, 0, 0)

…       body.add(u’Red: (255, 0, 0)‘)

…       body.color = (0, 255, 0)

…       body.add(u’Blue: (0, 255, 0)‘)

…       body.color = (0, 0, 255)

…       body.add(u’Green: (0, 0, 255)‘)

>>> colors()

>>>

Результат работы функции colors() – цветной текст.

highlight_color

Определяет цвет выделения (рассмотрено ниже).

style

Определяет стиль выводимого текста. Может принимать значение:

STYLE_BOLD

Текст получается жирным.

STYLE_UNDERLINE

Текст получается подчеркнутым

STYLE_ITALIC

Текст получается курсивом.

STYLE_STRIKETHROUGH

Текст получается перечеркнутый линией.

HIGHLIGHT_STANDARD

Текст получается выделенным.

HIGHLIGHT_ROUNDED

Текст получается с округленным выделением.

HIGHLIGHT_SHADOW

Текст получается с тенью.

Для объединения нескольких стилей используется логическая операция « | »:

>>> def  styles():

…       appuifw.app.body = body = appuifw.Text()

…       body.color = (0, 0, 0)

…       body.style = appuifw.STYLE_BOLD

…       body.add(u’STYLE_BOLD\n’)

…       body.color = (255, 0, 0)

…       body.style = appuifw.STYLE_UNDERLINE

…       body.add(u’STYLE_UNDERLINE\n’)

…       body.color = (0, 255, 0)

…       body.style = appuifw.STYLE_ITALIC

…       body.add(u’STYLE_ITALIC\n’)

…       body.color = (0, 0, 255)

…       body.style = appuifw.STYLE_STRIKETHROUGH

…       body.add(u’STYLE_STRIKETHROUGH\n’)

…       body.color = (255, 0, 255)

…       body.style = appuifw.STYLE_BOLD | appuifw.STYLE_UNDERLINE

…       body.add(u’STYLE_BOLD + STYLE_NDERLINE\n’)

…       body.color = (255, 255, 0)

…       body.style = appuifw.STYLE_BOLD | appuifw.STYLE_UNDERLINE | appuifw.STYLE_ITALIC

…       body.add(u’STYLE_BOLD + STYLE_NDERLINE + STYLE_ITALIC\n’)

…       body.color = (0, 255, 255)

…       body.style = appuifw.STYLE_BOLD | appuifw.STYLE_UNDERLINE | appuifw.STYLE_ITALIC | appuifw.STYLE_STRIKETHROUGH

…       body.add(u’STYLE_BOLD + STYLE_NDERLINE + STYLE_ITALIC + STYLE_STRIKETHROUGH\n’)

>>> styles()

>>>

Результат работы функции styles – стили текста.

>>> def  highlights ():

…       appuifw.app.body = body = appuifw.Text()

…       body.color = (255, 0, 255)

…       body.highlight_color = (0, 255, 0)

…       body.style = appuifw.STYLE_BOLD | appuifw.HIGHLIGHT_STANDARD

…       body.add(u’STYLE_BOLD + HIGHLIGHT_STANDARD \n’)

…       body.color = (255, 255, 0)

…       body.highlight_color = (255, 0, 0)

…       body.style = appuifw.STYLE_UNDERLINE | appuifw.HIGHLIGHT_ROUNDED

…       body.add(u’STYLE_UNDERLINE + HIGHLIGHT_ROUNDED \n’)

…       body.color = (0, 255, 255)

…       body.highlight_color = (0, 0, 0)

…       body.style = appuifw.STYLE_ITALIC | appuifw.HIGHLIGHT_SHADOW

…       body.add(u’STYLE_ITALIC + HIGHLIGHT_SHADOW \n’)

>>> highlights ()

>>>

Результат работы функции highlights – выделение.

На этом разговор об объекте Text() я закончу. А сейчас начнем изучение строк. Строки являются необходимым атрибутом любой программы – именно через них выводится вся информация. Даже если это число или список, все равно их надо будет преобразовать в строку. Итак, начнем со способов создания строк.

Создание строк

Строки создаются заключением текста в одинарные (‘’) или двойные кавычки (“”). Причем, открывающиеся и закрывающиеся кавычки должны быть одинаковы. Также можно использовать тройные кавычки (‘‘‘’’’ или “““”””), если начало и конец текста находится на разных строках:

>>> text = “““Hello!

… My name Albert”””

>>> print text

Hello!

My name Albert

>>>

Если вывести переменную text напрямую через консоль, то можно увидеть другую картину:

>>> text

>>> ‘Hello!\nMy name Albert’

Появился новый символ ‘\n’, и называется он управляющим. Используются управляющие символы для осуществления тех или иных действий при обработке строк. Так, символ ‘\n’ указывает переход на новую строку и дает возможность вводить многостраничные тексты в одну строку:

>>> text = ’I\nlove\you!’

>>> print text

‘I

love

you’

>>>

Создаем строки.

Есть еще такие управляющие символы:

1) \\ –  символ обратно косой черты;

2) \’ – символ одинарной кавычки;

3) \” – символ двойной кавычки;

4) \r – символ возврата каретки;

5) \t – символ горизонтальной табуляции;

6) \v – символ вертикальной табуляции.

Строки можно «склеить» с помощью оператора «+» и «размножить» с помощью оператора «*»:

>>> text = ‘Hello’ + ‘ ’ + ‘world!’

>>> print text

>>> ‘Hello world!’

>>> text = ‘Help me! ’

>>> text * 3

>>> ‘Help me! Help me! Help me! ’

>>>

Cтроки, записанные друг за другом, автоматически объединяются:

>>> text = ‘Hello’ ‘ ’ ‘world!’

>>> print text

>>> ‘Hello world!’

>>>

Склеиваем и размножаем строки.

По сути, строка в языке Python – последовательность символов с произвольным доступом. Это значит, что к любому символу можно обратиться по его номеру – индексу:

>>> text = ‘string’

>>> text[0]

‘s’

>>> text[-1]

‘g’

>>>

Если значение индекса меньше нуля, то отчет идет с конца строки.

Для облегчения восприятия приведу таблицу:

s t r i n g 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1

Из любой строки можно получить его подстроку с помощью среза. Срез – это два индекса, разделенные двоеточием и обозначающие начало и конец подстроки:

>>> text = ‘string’

>>> text[1:5]

‘trin

>>>

Т.е. мы получили подстроку начиная от 1 элемента (включительно) до 5 элемента (он в результат не включается). В срезе могут быть использованы отрицательные значения. Если какой-то индекс вообще опущен, то принимается значение по умолчанию: первый индекс принимается за ноль, второй – за длину строки:

>>> text = ‘string’

>>> text[:3]

‘str’

>>> text[3:]

‘ing’

>>> text[:]

‘string’

>>> text[-6:-3]

‘str’

>>> text[-3:]

‘ing’

>>>

Строки во многом аналогичны спискам.

Обязательно потренируйтесь, чтобы понять, как работает срез, – это очень важный момент. Также запомните  – изменить строки нельзя! Это приведет к ошибке!

Прямое изменение строки можно заменить работой со срезами:

>>> text = ‘My name Python.’

>>> text[:8] + ’Albert’ + text[14]

‘My name Albert.’

>>>

У строки также можно определить длину с помощью функции len():

>>> text = ‘Hello!’

>>> len(text)

>>> 6

>>>

А теперь я перечислю методы, доступные для всех строк.

Форматирование

center(width)

Возвращает строку длиной width символов, в центре которой расположена исходная строка. Т.е. метод центрирует строку в поле заданной ширины. При этом строка дополняется с начала и с конца пробелами до нужной длины.

>>> text = ‘string’

>>> text.center(12)

‘   string   ‘

>>>

ljust(width)

Возвращает копию исходной строки, дополненную справа пробелами. Т.е. метод выравнивает строку влево в поле заданной ширины.

>>> text = ‘string’

>>> text.ljust(9)

‘string   ‘

>>>

rjust(width)

Возвращает копию исходной строки, дополненную слева пробелами. Т.е. метод выравнивает строку вправо в поле заданной ширины.

>>> text = ‘string’

>>> text.rjust(9)

‘   string‘

>>>

В функциях center(), ljust(), rjust(), если width меньше длины исходной строки, то она возвращается без изменений.

Разбиение и объединение

join(sep)

Возвращает объединение строк последовательности, используя исходную строку в качестве разделителя. Если последовательность содержит элементы, которые не являются строками, происходит ошибка.

>>> list = [‘My’, ‘name’, ‘Albert’]

>>> ‘ ‘.join(list)

‘My name Albert‘

>>>

split([sep [,maxcount]])

Возвращает список слов, содержащихся в исходной строке. В качестве разделителя слов используется строка sep. Если она не задана, разделителем слов считаются символы пропуска. Если задан аргумент maxcount, причем maxcount >= 0, то возвращается список из maxcount первых слов.

>>> text = ‘My name Albert‘

>>> text.split()

[‘My’, ‘name’, ‘Albert’]

>>> text.split(‘’, 2)

[‘My’, ‘name’]

>>>

splitlines([keepends])

Аналог метода split(), но использующий в качестве разделителя переход на новую строку. Символы перехода на новую строку включаются в результат, только если необязательный аргумент keepends равен 1.

>>> text = “““Hello World!

Hello Albert!”””

>>> text.splitlines()

[‘Hello World!’, ‘Hello Albert!’]

>>>

Поиск вхождений

count(sub [, start [, end]])

Возвращает количество вхождений строки sub (т.е. сколько оно раз встречается) в исходной строке.

>>> text = ‘Help me! Help!’

>>> text.count(‘Help’)

2

>>>

startswith(prefix [, start [, end]])

Возвращает 1, если исходная строка начинается на prefix, иначе – 0.

>>> text = ‘Help me!’

>>> text.startswith(‘help’)

0

>>> text.startswith(‘Help’)

1

>>>

endswith(suffix [, start [, end]])

Возвращает 1, если исходная строка оканчивается на suffix, иначе – 0.

>>> text = ‘Help me!’

>>> text.endswith(‘me’)

0

>>> text.endswith(‘me!’)

1

>>>

find(sub [, start [, end]])

Возвращает наименьший индекс строки sub в исходной строке. Если строка не найдена, возвращается –1.

>>> text = ‘Help me! Help!’

>>> text.find (‘Help’)

0

>>>

rfind(sub [, start [, end]])

Возвращает наибольший индекс строки sub в исходной строке. Если строка не найдена, возвращается –1.

>>> text = ‘Help me! Help!’

>>> text.rfind (‘Help’)

9

>>>

index(sub [, start [, end]])

Аналог метода find(), но генерирует исключение, если строка sub не найдена.

rindex(sub [, start [, end]])

Аналог метода rfind(), но генерирует исключение, если строка sub не найдена.

В функциях count(), startswith(), endswith(), find(), rfind(), index(), rindex() необязательные аргументы start и end интерпретируются как индексы в операции среза исходной строки.






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.