Файл с настройками пользователя

fajl s nastrojkami polzovatelya Примеры законченных программ с графическим интерфейсом

Итак, перейдем к программному коду. В первую очередь рассмотрим модуль с настройками пользователя, который приводится в примере 11.1. Он предназначен главным образом для того, чтобы было удобнее определять параметры внешнего вида, отличные от значений по умолчанию. Редактор PyEdit реализован так, что может работать и без этого модуля, и если он содержит синтаксические ошибки. Этот файл предназначен, прежде всего, для использования редактором PyEdit, когда он запускается как самостоятельный сценарий (в этом случае файл с настройками импортируется из текущего каталога), но вы также можете определить собственную версию файла с настройками PyEdit в любом другом каталоге, включенном в путь поиска модулей.

Дополнительно о том, какие настройки загружаются редактором, смотрите исходный программный код textEditor.py далее. Содержимое этого файла импортируется двумя различными способами — одна инструкция импортирования, которая загружает настройки внешнего вида, предполагает, что этот модуль (а не содержащий его пакет) находится в пути поиска модулей, и пропускает его, если его не находит, а другая, загружающая настройки порядка выбора кодировок, всегда отыскивает этот файл, независимо от способа запуска. Ниже описывается, что означает такое деление настроек для клиентов:

     Поскольку первая операция импортирования, загружающая настройки внешнего вида, ищет файл в пути поиска модулей, а не в каталоге основного пакета, то для каждого клиентского приложения, в его домашнем каталоге, можно определить собственный файл textConfig.py и тем самым обеспечить индивидуальные настройки PyEdit для каждого клиента.

     Настройки порядка выбора кодировки, напротив, всегда загружаются из файла, находящегося в каталоге пакета, с использованием операции импортирования по относительному пути, потому что они имеют более важное значение и маловероятно, что они будут отличаться от одного приложения к другому. Используемая здесь операция импортирования по относительному пути в пакете является эквивалентом импортирования всего пакета от корня PP4E, но не зависит от структуры каталогов.

Подобно эвристическим алгоритмам выбора кодировки символов, описанным выше, эта модель импортирования может считаться ориентировочной и может быть пересмотрена в соответствии с требованиями практической реализации.

Пример 11.1. PP4E\Gui\TextEditor\textConfig.py

модуль с начальными настройками PyEdit (textEditor.py);

#                                                                                  

#   Общие настройки

#   закомментируйте любые настройки в этом разделе, чтобы принять настройки по

#   умолчанию библиотеки Tk или программы; шрифт/цвет можно также менять из меню

#   в графическом интерфейсе, а также менять размеры окон после их открытия;

#   импортируются из пути поиска модулей: могут определять отдельные настройки

#   для каждого клиентского приложения, игнорируется, если находится не в пути

#   поиска модулей;

#                                                                                  

#   начальные настройки шрифта # семейство, размер, стиль

font = (‘courier’, 9, ‘normal’) # например, стиль: ‘bold italic’

#   начальные настройки цвета # по умолчанию = white, black

bg = lightcyan # название цвета или шестнадцатеричный код RGB

fg = ‘black’ # например, ‘powder blue’, ‘#690f96’

#   начальные настройки размеров

height = 20 # умолчания Tk: 24 строки

width = 80 # умолчания Tk: 80 символов

#   нечувствительность к регистру при поиске

caseinsens = True # по умолчанию = 1/True (включена)

#                                                                                  

#   2.1: Порядок выбора кодировки для содержимого и имен файлов в операциях

#   открытия и сохранения;

#   опробует каждый случай из перечисленных ниже в указанном порядке, пока не

#   будет обнаружен первый, дающий положительный результат; запишите во все

#   переменные false/пустое значение/0, чтобы перейти к использованию умолчаний

#   для вашей платформы (то есть utf-8’ — в Windows, или ascii’, ‘latin-1’

#   или другая кодировка в иных системах, таких как Unix);

#   savesUseKnownEncoding: 0=Нет, 1=Да, только для операции Save, 2=Да для

#   операций Save и SaveAs;

#   всегда импортируются из этого файла: sys.path — если главный модуль, иначе —

#   относительно пакета;

#                                                                                  

#   1) Сначала выполняется попытка применить известную

#   кодировку (например, из заголовка сообщения

#   электронной почты)

opensAskUser = True # 2) Если True, далее выполняется запрос у пользователя

#   (предварительно заполняется значением по умолчанию)

opensEncoding = ‘’ # 3) Если непустое значение, далее будет выполнена попытка # применить эту кодировку: latin-1’, ‘cp500’

#  4) Далее выполняется попытка применить

#  sys.getdefaultencoding() — системное значение

#  по умолчанию

#  5) В крайнем случае текст передается в двоичном виде и

#  используются алгоритмы Tk

savesUseKnownEncoding = 1 # 1) Если > 0, выполняется попытка применить

#     кодировку, известную по последней операции Open

#     или Save

savesAskUser = True # 2) Если True, далее выполняется запрос у

#     пользователя (предварительно заполняется

#     известным значением?)

savesEncoding = ‘’ # 3) Если непустое значение, далее будет выполнена

#     попытка применить эту кодировку: utf-8’ и так

#     далее

#     4) В крайнем случае выполняется попытка применить

#     sys.getdefaultencoding()

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий