Загрузка и выгрузка из базы данных Sqllite3 в tkinter с сохранением стиля
Уважаемые господа, я практикуюсь в языке Python и SQL с использованием библиотек Sqllite3 и tkinter. У меня возник важный вопрос который не могу решить и с которым обращаюсь сюда за советом. Готового кода не прошу - дайте лишь материал для ознакомления или поясните нюансы возможно ли реализовать мою задумку. Ситуация следующая: Есть к примеру файл word в котором размеченный текст - где-то выделены заголовки жирным, где-то списки нумерованные, где-то гиперссылки и т.д. Есть область в tkinter куда хотелось бы отображать информацию из БД. Интересует - возможна ли каким-то образом загрузка в БД с сохранением стиля текста (жирный, списки нумерованные) и последующая выгрузка с применением этих стилей. В данный момент я могу реализовать эту идею без БД с помощью ручной работы над текстом, но это большой объём текста (кода) - хотелось бы упростить задачу. Подскажите..
Ответы (2 шт):
Есть вопрос на StackOverflow про форматирование текста, а также на PythonGides про написании Word документов в tkinter, надеюсь они Вам помогут.
На мой взгляд, задача реализуемая, но достаточно муторная и требует много деталей.
Возможно эти данные станут для Вас полезными:
• Для работы с MS Word документами, есть библиотека docx:
pip install python-docx
• Для работы с SQL, я бы рекомендовал postgresql и библиотеку psycopg2:
pip install psycopg2
sqlite3 поддерживает меньше типов данных, менее гибок и масштабируемый, поэтому и рекомендую сразу использовать postgresql, но в данной задаче, возможно, это и не обязательно. Различий в синтаксисе СУБД минимально, перейти легко.
• У библиотеки docx есть возможность распознавать стиль слова, так что учитывать разницу форматирования можно, но нет типа данных, который бы явно указал, что текст жирный, курсив и т д.
Думаю, нужно написать собственную функцию, которая будет добавлять идентификатор стиля для каждого слова. Допустим, как в html - теги <b>Жирный</b
или **Жирный**
такого вида.
В общем, можно придумать собственные идентификаторы стиля или использовать проверенные методы.
• Проходимся по всем словам документа циклом или своим способом, проверяя каждое слово на предмет стиля и, если такой имеется, то функция должна возвращать слово в уже отформатированном виде.
Затем добавляем полученный результат, в котором весь текст документа отформатирован под Ваши условия, в базу данных.
• Далее в tkinter добавляем всё полученное в том представлении, которое Вы сделаете, а форматирование текста будет таким же образом, только не добавляя в БД, а извлекая из него и добавляя в программу.
Условный пример:
Содержимое файла test.docx:
Пример1
Пример2
Пример3
Проходим функцией и в БД будет:
Пример1
<b>Пример2</b>
<i>Пример3</i>
Проходим другой функцией по словам из БД и делаем соответствующий вид уже в tkinter
Это тот способ, который пришёл мне в голову, но 100% есть решение намного лучше и практичнее, но я не нашёл. Возможно, у меня получилось натолкнуть Вас на нужные мысли.