
Kawai.Focus - приложение для фокусировки внимания (часть 1)
Данная статья посвящена:
- Началу работы над open source приложением для фокусировки внимания "Kawai.Focus";
- Созданию идеи приложения и обсуждению его стека;
- Дебюту новой рубрики "Python и C++ в Open source".
Реклама

Вступление
Всем доброго дня! В предыдущей статье Сравнение улучшения кода в Python и C++ (часть 3) я закрыл тему электронной книги на Python и C++. В ней мы поговорили о gdb
(GNU Debugger), использовали его на неисправном генераторе.
Сегодня я начинаю новую рубрику "Python и C++ в Open source", в которой я начну работу над полезным приложением с открытым исходным кодом. Приложение будет затрагивать тему фокусировки внимания во время работы за компьютером. Оно также будет способствовать сбережению ментального здоровья. Я назвал его "Kawai.Focus" шутки ради =)
Этот проект я хочу довести минимум до первой рабочей версии, но если проект станет популярным и обрастет обновлениями, буду не против. Теперь давайте посмотрим, что за приложение я собираюсь реализовать для open source.
Новая рубрика Python и C++ в Open source
Прежде чем я начну работу над приложением "Kawai.Focus", я хочу рассказать вам о новой рубрике в целом. Идея рубрики "Python и C++ в Open source" заключается в том, чтобы писать полезные для всех приложения, расширять своё портфолио, а также дать возможность другим разработчикам привносить в проект что-то новое.
Также хочу упомянуть, что теперь я не сравниваю C языки с Python, а делаю так, чтобы они работали вместе. Такой подход гораздо проще и эффективнее, чем попытка использовать Python как прототип для C++. Я буду использовать плюсы каждого языка для повышения эффективности их взаимодействия. На Python проще писать веб и десктоп-приложения, а на C++ реализовывать внутренние компоненты, где важна скорость обработки данных.
О фокусировке внимания
Мы живём в цифровом мире, где полно отвлечений на различные внешние раздражители. Это могут быть уведомления в соцсетях, процесс выполнения нескольких дел одновременно и т.д. У одних людей получается эффективно работать в условиях многозадачности, а у других нет. Одни люди знают, когда надо остановиться смотреть "котиков на YouTube", а другие прокрастинируют и не могут остановиться в просмотре контента полдня напролёт.
Прокрастинация - это склонность откладывать выполнение важных задач на потом, часто заменяя их менее значимыми, но более приятными делами. Она может привести к стрессу, снижению продуктивности и чувству вины из-за недовыполнения своих обязанностей.
Я один из тех людей, которые могут делать что-то эффективно, сосредоточившись на одной задаче. Для меня смерти подобно оставить открытую соцсеть и писать статью или код одновременно с этим. Я уйду в общение, надолго забыв работу. Это происходит потому, что меня отвлекают уведомления, и общение подкрепляет гормон удовольствия дофамин. Соцсети постоянно подкидывают что-то новенькое, поэтому дофамин постоянно выделяется и заставляет человека там залипать.
Единственным нормальным для меня и многих других решением является временная изоляция от раздражающих факторов. Одновременно с этим выделяется определённое время, которое посвящается конкретной задаче. Лично я выключаю Wi-Fi на телефоне, закрываю соцсети на ПК, включаю таймер и работаю в течение времени этого таймера.
Эта техника называется Pomodoro, которая управляет вашим временем работы и перерывами на отдых. Pomodoro переводится с итальянского как "помидор". Этот метод был так назван, потому что его разработчик, Франческо Чирилло, использовал кухонный таймер в форме помидора, чтобы отмерять промежутки рабочего времени.
Обычно я завожу таймер на телефоне или планшете на комфортное для себя время работы – это 55 минут, а после этого завожу таймер на отдых – 10 минут. Такая серия из таймеров длится несколько раз за день. Человек обычно сам подбирает для себя комфортное время работы и отдыха.
Стандартное минимальное рабочее время в этой технике – 25 минут, а время отдыха – 5 минут. Во время отдыха я обычно встаю из-за компьютера, делаю перекус, наливаю себе воды и разминаюсь.
Делать перерывы очень важно как для глаз, так и для вашей спины. Ещё во время перерыва отдыхает голова. Я рекомендую во время отдыха не думать о работе, а отвлечься на что-то другое. Так вы отдохнёте, и у вас появится энергия для работы.
Для чего мне приложение
Я хочу, чтобы все функции были в одном приложении, и я не всегда могу вести контроль за другими приложениями. Дело в том, что наше внимание переутомляется, и тогда концентрация падает и самоконтроль тоже. Кроме того, нужно не допускать переработки, которые портят ваше ментальное и физическое здоровье. В такие моменты приложение должно не дать мне отвлечься и не дать выгореть.
Выгорание (или эмоциональное выгорание) – это состояние физического и эмоционального истощения, которое чаще всего возникает у людей на фоне длительного стресса и повышенной нагрузки на работе. Оно может проявляться чувством усталости, цинизмом по отношению к работе и сниженной профессиональной эффективностью.
В Японии существует феномен, известный как кароси (過労死), что буквально переводится как "смерть от переработки". Это явление связано с длительным стрессом и переутомлением на работе, что приводит к серьёзным медицинским последствиям, таким как инфаркт и инсульт. Кому интересно, можете прочитать подробно о феномене кароси.
Сбалансированный режим работы и отдыха без преувеличения сохранит вам здоровье и вашу жизнь. Многие специалисты в области здравоохранения также рекомендуют придерживаться максимальной нормы в 55 часов работы в неделю. Больше этого уровня существенно увеличивается риск проблем со здоровьем, включая инсульты и сердечные заболевания.
Если брать во внимание пятидневную рабочую неделю, то это аж 11 часов в день. Лично мне кажется, что даже с 55 часами в неделю вы упашитесь по самое не могу до переутомления =)
Идея приложения Kawai.Focus
Главными идеями для приложения "Kawai.Focus" являются реализация таймера Pomodoro, а также отсечка отвлекающих факторов во время работы. У меня есть идея, как ещё сильнее расширить этот функционал, но для минимального MVP этот функционал мне сойдёт.
Мы разделим реализацию первого MVP на две части: таймер Pomodoro и отсечка отвлекающих факторов. Первым делом мы реализуем сам таймер Pomodoro, а отсечку отвлекающих факторов пока трогать не будем.
Функционал таймера Pomodoro
Основным функционалом является возможность настройки серии таймеров: таймер работы, таймер перерыва, таймер длинного перерыва. Один помидор в данной технике равен одному таймеру работы плюс одному короткому перерыву. Ещё нужно настроить, сколько помидоров должно пройти до длинного перерыва.
После настройки мы должны иметь возможность запуска серии данных таймеров. Также нужно предусмотреть паузу и отмену таймеров. Жизнь бывает очень непредсказуемой, поэтому таймер не должен быть железобетонным. Сама его идея в том, чтобы вы были настроены на фокусировку, когда вы можете себе это позволить.
Ещё по данной технике нужен обязательно текстовый гайд. Гайд должен быть коротким и информативным, в котором будет рассказано о технике Pomodoro и как пользоваться таймером.
Функционал:
- Конструктор таймеров;
- Запуск/пауза/отмена серии таймеров;
- Настройка длительности таймера работы/таймера короткого перерыва/таймера длинного перерыва;
- Настройка количества помидоров до длинного перерыва;
- Текстовый гайд по использованию и технике Pomodoro.
Стек технологий
Самое основное, что мне нужно определить, - это то, что я буду использовать для интерфейса моей программы. Я по большей части бэкенд-разработчик с не очень обширными знаниями фронтенда. Для моей идеи я должен иметь возможность написать десктопное приложение, которое должно будет уметь влиять на работу программ и запускаться в операционной системе Linux (Ubuntu/Debian). Возможно, в будущем добавлю поддержку Windows и даже Android.
Писать я буду основную программу на языке Python. Поэтому давайте посмотрим, какие есть библиотеки для кроссплатформенной разработки, которые я рассматриваю для себя.
Flet
Flet - это фреймворк, позволяющий создавать кроссплатформенные приложения на Python. Он разрабатывался для упрощения разработки графических интерфейсов (GUI), используя возможности Flutter и Python. Flutter - это фреймворк, написанный на языке Dart, созданный Google, который используется для разработки кроссплатформенных нативных мобильных и веб-приложений.
Ссылка на документацию Flet doc.
Основные особенности Flet:
- Поддержка платформ: Linux, Windows, macOS, Android и iOS;
- Не требует глубоких знаний фронтенд-разработки;
- Возможность создания приложений с мгновенной передачей данных и взаимодействием нескольких пользователей;
- Flet включает собственный веб-сервер на основе FastAPI и клиент для десктопных приложений, что позволяет запускать приложения быстро и без сложной настройки;
- Вместо создания отдельных частей приложения (frontend и backend), Flet позволяет создавать всё приложение как единое целое.
Буквально несколько недель назад узнал об этом фреймворке у Ивана, создателя канала "Код на салфетке". Мне нужно было написать интересное тестовое задание, поэтому спрашивал насчёт фреймворка для моих целей (искал новенькое и интересное). Требовалось написать простое приложение для просмотра загруженности процессора и других параметров системы.
Фреймворк Flet оказался довольно простым в освоении и интересным. Буквально на второй день я уже написал тестовое задание и скомпилировал deb пакет при помощи Nuitka. Из-за обилия желающих вакансия ушла раньше в архив, чем я сдал тестовое. Поэтому я не люблю их и пишу только интересные тестовые для своего развития =)
Если вам нужен лёгкий в освоении фреймворк для создания простых приложений, Flet может стать отличным выбором. Он подойдёт веб- и десктоп-разработчикам, которые хотят быстро разрабатывать несложные проекты. Сначала я был настроен использовать Flet, но в итоге увлёкся более функциональным и универсальным фреймворком.
Kivy
Kivy - это фреймворк для создания кроссплатформенных приложений на языке Python. Он был разработан для упрощения создания графических интерфейсов и обладает несколькими важными особенностями, которые делают его отличным выбором для разработки как простых, так и сложных проектов.
Ссылка на документацию Kivy doc.
Основные особенности Kivy:
- Поддерживает Linux, Windows, macOS, Android и iOS, что позволяет разрабатывать одно приложение для всех этих платформ на едином коде;
- Сборка приложения под Android и iOS более сложная чем под Linux, Windows и macOS;
- Kivy поддерживает сложные мультитач-жесты, что делает его отличным выбором для разработки интерактивных и пользовательских интерфейсов;
- Фреймворк включает в себя множество встроенных виджетов и компонентов, которые позволяют создавать интуитивные и красивые пользовательские интерфейсы;
- Kivy использует OpenGL ES 2 для отображения графики, что обеспечивает высокую производительность и гибкость в создании визуальных эффектов и анимаций;
- Kivy включает собственный XML-подобный язык разметки, который упрощает создание и настройку пользовательских интерфейсов;
- Позволяет создавать сложные и яркие игры, благодаря поддержке мультимедиа и анимаций.
Узнав о многогранности Kivy, я подумал: почему бы не выбрать более универсальную библиотеку, на которой можно написать что угодно, и которая более интересна в плане работы с мобильными устройствами! Я выбрал Kivy и надеюсь, что эта библиотека затянет меня и подарит много интересной работы. Что из этого выйдет, вы увидите далее.
База данных
Это приложение индивидуально для каждого пользователя, поэтому я не вижу смысла использовать тяжёлые реляционные базы данных, такие как PostgreSQL. Я собираюсь использовать лёгкую базу данных SQLite3, которую можно положить внутрь приложения и хранить небольшую информацию пользователя. Возможно, даже SQLite3 окажется избыточной, и я обойдусь конфигом JSON.
Виртуальное окружение
Я установлю Python 3.12.0 при помощи Pyenv и создам в нём виртуальное окружение для проекта. Зависимостями и библиотеками я буду управлять с помощью Poetry. Таким образом, Poetry будет устанавливать библиотеки и их зависимости в виртуальное окружение Pyenv.
Создание репозитория
Теперь, когда мы поговорили об идее проекта и его стеке технологий, можно начать писать код. Поскольку проект open source, то я создам его на Github - популярном хранилище репозиториев.

Я изменил имя репозитория на kawai-focus (скриншот сделан до нажатия кнопки Create repository) и того изменения! Так как это open source, я делаю репозиторий публичным. Я решил использовать MIT лицензию, которая хорошо подходит для open source проекта.
MIT лицензия (Massachusetts Institute of Technology License) - это одна из самых простых и широко используемых лицензий для программного обеспечения с открытым исходным кодом. Она известна своей краткостью и простотой.
Вот основные моменты, которые она охватывает:
- Лицензия позволяет использовать, копировать, изменять, сливать, публиковать, распространять и продавать копии программного обеспечения;
- Программное обеспечение предоставляется "как есть", без каких-либо гарантий. Автор не несет никакой ответственности за использование данного ПО в случае каких-либо убытков или потерь;
- Все копии или существенные части программного обеспечения должны сохранять оригинальное уведомление об авторских правах и уведомление о лицензии.
Более подробно вы можете узнать по ссылке на лицензию MIT License моего репозитория kawai-focus.
Начало работы над кодом проекта
Виртуальное окружение
Я упущу момент создания виртуального окружения на Pyenv, перейдя сразу к установке необходимых библиотек в него. Скажу только, что мне нужно активировать виртуальное окружение Pyenv перед началом работы. Это необходимо, так как в моём случае Poetry будет устанавливать библиотеки и зависимости в виртуальное окружение Pyenv, а не в своё собственное.
После активации в терминале можно увидеть примерно это (name_your_virtualenv) user_name@name_pc $
, где в скобках написано название виртуального окружения.
Я буду показывать на примере работы в Linux Debian. Для удобства я буду использовать чистые команды для Poetry 1.8.3. Для тех кто не знаком с Poetry рекомендую гайд по Poetry от Ивана создателя канала "Код на салфетке", ссылку на который я оставлю в описании к статье. Перейдём в эмулятор терминала Linux.
Выполним клонирование Github репозитория:
git clone name_url_git_repo
Перейдём в папку клонированного репозитория:
cd path_to_repo/kawai-focus
Находясь в папке kawai-focus
инициализируем новый проект:
poetry init
Команда poetry init
инициализирует новый проект в текущей директории, создавая файл pyproject.toml
для управления зависимостями и конфигурациями проекта.
Настроим работу Poetry с виртуальным окружением Pyenv:
poetry config virtualenvs.prefer-active-python true
Команда poetry config virtualenvs.prefer-active-python true
позволяет Poetry работать с пакетами и зависимостями в текущем активированном виртуальном окружении, а не своим собственным.
Сгенерируем файл poetry.lock
:
poetry install
Команда poetry install
генерирует файл poetry.lock
, если он отсутствует. Этот файл фиксирует точные версии зависимостей, установленных в проекте, чтобы гарантировать, что установка зависимостей будет одинаковой на всех системах.
Установим фреймворк Kivy:
poetry add kivy
После установки мы увидим в terminal следующий вывод:
Using version .3.1 for kivy
Updating dependencies
Resolving dependencies... (0.3s)
Package operations: 10 installs, 0 updates, 0 removals
- Installing certifi (2024.12.14)
- Installing charset-normalizer (3.4.1)
- Installing idna (3.10)
- Installing urllib3 (2.3.0)
- Installing requests (2.32.3)
- Installing docutils (0.21.2)
- Installing filetype (1.2.0)
- Installing kivy-garden (0.1.5)
- Installing pygments (2.19.1)
- Installing kivy (2.3.1)
Poetry установил Kivy и все необходимые ему зависимости. Также после установки все зависимости и библиотека фреймворка Kivy добавятся в файл poetry.lock
.
Структура проекта
В документации Poetry есть некоторые рекомендации по базовой структуре проекта, которую вы можете создать командой poetry new poetry-demo
, где poetry-demo
- это название проекта.
Базовый пример из документации Poetry docs:
poetry-demo
├── pyproject.toml
├── README.md
├── poetry_demo
│ └── __init__.py
└── tests
└── __init__.py
Моя структура, которую я создал вручную:
kawai-focus
├── pyproject.toml
├── poetry.lock
├── README.md
├── LICENSE
├── .gitignore
├── kawai_focus
│ └── __init__.py
│ └── main.py
Как видно из моей структуры, она напоминает образец из документации Poetry. Я создал пакет kawai_focus
, в котором будет храниться наш главный main.py
файл, запускающий всё приложение. Файл LICENSE
хранит MIT лицензию.
"Hello, world!" для Kivy
Давайте напишем для Kivy самое простое минимальное приложение, которое выведет строку "Hello Kawai.Focus!" и попробуем его запустить.
main.py
Файл main.py
будет запускать приложение.
import kivy
kivy.require('2.3.1')
from kivy.app import App
from kivy.uix.label import Label
class KawaiFocusApp(App):
"""Класс для создания приложения"""
title = 'Kawai.Focus'
def build(self):
return Label(text='Hello Kawai.Focus!')
def main() -> None:
"""Главная функция для запуска приложения Kawai.Focus"""
try:
KawaiFocusApp().run()
except KeyboardInterrupt:
pass
Разберём как устроен код файла main.py
:
kivy.require('2.3.1')
проверяет, что версия Kivy не ниже2.3.1
;from kivy.app import App
импортирует классApp
, который необходим для создания приложения;from kivy.uix.label import Label
импортирует классLabel
для отображения текста;KawaiFocusApp(App)
класс , который создаст наше приложение;title = 'Kawai.Focus'
содержит название приложения, которое будет отображаться в его окне сверху;build(self)
метод вернёт виджетLabel
с текстом "Hello Kawai.Focus!".
Виджет - это основная строительная единица пользовательского интерфейса (UI) в различных фреймворках и платформах. Он представляет собой элемент интерфейса, такой как кнопка, текстовое поле, метка или панель, которые пользователи могут видеть и с которыми могут взаимодействовать.
Функция main()
служит для запуска приложения. Она пригодится для скрипта Poetry. Мы добавим её туда и при помощи Poetry будем запускать. Внутри функции main()
в строке KawaiFocusApp().run()
мы запускаем наше приложение с помощью метода run()
. Мы отлавливаем ошибку KeyboardInterrupt
, чтобы не видеть её Traceback
, когда выключаем программу сочетанием клавиш Ctrl + C
на Linux.
pyproject.toml
Файл pyproject.toml
нужен для создания конфигурации проектов на Python, который управляет зависимостями и настройками проекта, такими как версии пакетов и конфигурации сборки. Основу этого файла можно создать в интерактивном режиме с помощью команды poetry init
. Подробнее вы можете прочитать в документации Poetry docs.
Давайте посмотрим на содержимое файла pyproject.toml
:
[tool.poetry]
name = "kawai-focus"
version = "0.1.0"
description = "Kawai.Focus - приложение для фокусировки внимания на основе таймера Pomodoro."
authors = ["Arduinum <message.chaos628@gmail.com>"]
license = "MIT"
readme = "README.md"
[tool.poetry.dependencies]
python = "3.12.0"
kivy = ".3.1"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.scripts]
kawai-focus = "kawai_focus.main:main"
Я добавил строку kawai-focus = "kawai_focus.main:main"
в раздел [tool.poetry.scripts]
. Здесь kawai-focus
- это название скрипта, в котором мы обращаемся к файлу main.py
через точку, а через двоеточие - к функции main()
. После добавления обязательно нужно выполнить poetry install
.
Запуск приложения
Запустим наше приложение с помощью Poetry в terminal:
poetry run kawai-focus
Далее появляются логи запуска нашего приложения в terminal:
[INFO ] [Logger ] Record log in /home/user_name/.kivy/logs/kivy_25-01-29_2.txt
[INFO ] [Kivy ] v2.3.1
[INFO ] [Kivy ] Installed at "/home/user_name/.pyenv/versions/3.12.0/envs/kivy_kawai_focus/lib/python3.12/site-packages/kivy/__init__.py"
[INFO ] [Python ] v3.12.0 (main, Aug 13 2024, 11:46:33) [GCC 12.2.0]
[INFO ] [Python ] Interpreter at "/home/user_name/.pyenv/versions/3.12.0/envs/kivy_kawai_focus/bin/python"
[INFO ] [Logger ] Purge log fired. Processing...
[INFO ] [Logger ] Purge finished!
[INFO ] [Factory ] 195 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2 (img_pil, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] Backend used <sdl2>
[INFO ] [GL ] OpenGL version <b'4.6.0 NVIDIA 550.78'>
[INFO ] [GL ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO ] [GL ] OpenGL renderer <b'NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 NVIDIA'>
[INFO ] [GL ] Texture max size <32768>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] NPOT texture support is available
Наш лог выдаёт следующую информацию:
- [Logger] record log: Запись журнала в указанном файле;
- [Kivy] v2.3.1: Версия Kivy (2.3.1);
- [Kivy] installed at: Путь установки Kivy;
- [Python ] v3.12.0: Версия Python (3.12.0);
- [GCC 12.2.0] : Версия компилятора для C/C++ языков;
- [Python] Interpreter at: Путь к интерпретатору Python;
- [GL] Using the "OpenGL" graphics system: Использование графической системы OpenGL;
- [GL] OpenGL version: Версия OpenGL (4.6.0 NVIDIA 550.78);
- [GL] OpenGL renderer: Рендерер OpenGL (NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2);
- [Window] auto add sdl2 input provider: Автоматическое добавление провайдера ввода sdl2;
- [Base] Start application main loop: Запуск главного цикла приложения.
Я выписал основные логи, на которых пока заострю внимание. Некоторые из них я поясню подробнее.
Kivy, будучи фреймворком для разработки кроссплатформенных приложений, написан на Python. Однако для некоторых задач он использует компоненты, написанные на C и C++, чтобы обеспечить высокую производительность и доступ к низкоуровневым функциям, таким как работа с графикой и устройствами ввода. Это как раз один из примеров взаимодействия языка Python и C/C++ =)
GNU Compiler Collection (GCC) используется для компиляции этих компонентов, чтобы они могли взаимодействовать с основным кодом, написанным на Python. Версия GCC указывает на компилятор, использовавшийся для создания бинарных библиотек, которые Kivy использует в своей работе.
Как я уже писал в разделе "Стек технологий" про Kivy, в нём используется OpenGL для отображения графики и интерфейсов. В моём случае процесс рендеринга выполняет моя видеокарта GeForce GTX 1050 Ti. Рендеринг - это процесс отрисовки графических элементов на экране.
Провайдер ввода (input provider) в контексте Kivy и SDL2 - это компонент, который обрабатывает ввод данных от различных устройств ввода, таких как клавиатуры, мыши, сенсорные экраны и другие устройства.
Окно приложения:

Результатом запуска является окно приложения с надписью "Hello Kawai.Focus!". У окна вид системного окна, так как она использует системный отрисовщик (renderer), а не свой собственный. В моём случае визуально оно в стиле Linux Debian с чёрной темой.
Системный отрисовщик (renderer) отвечает за визуализацию графических элементов на экране, используя нативные функции операционной системы. Это позволяет приложениям, созданным с помощью различных GUI-фреймворков, выглядеть согласовано с другими программами на данной платформе и обеспечивать лучшую интеграцию в системную среду.
Также слева отображается стандартная иконка фреймворка Kivy. Она отображается как изображение по умолчанию, если не указано своё. Закрыть окно можно, нажав на крестик справа (как обычно в любой операционной системе).
Строку return Label(text='Hello Kawai.Focus!')
я заменю на pass
в качестве заглушки, так как текст Hello Kawai.Focus!
нам не понадобится для дальнейшей разработки. Если попытаться запустить с pass
, то будет ошибка! Метод обязательно должен что-то вернуть для отображения на экране.
Поздравляю, мы написали основу для нашего приложения для фокусировки! =)
Анонс на следующие статьи
Следующая статья выйдет 27.02.2025, в которой мы будем продолжать писать приложение для фокусировки Kawai.Focus. Вас ждет реализация таймера Pomodoro в его минимальном варианте. Мы наполним наше пустое окно приложения интересным кодом!
Работа над ботом-магазином продолжается. Мне удалось реализовать заполнение базы данных из excel-документа в скрипте. Постараюсь на этой неделе сдать бота на последнее ревью Ивану создателю канала "Код на салфетке".
Заключение
- Поговорили о фокусировке внимания;
- Услышали про идею приложения и его стек;
- Поговорили о фреймворках Flet и Kivy;
- Настроили виртуальное окружение и библиотеки;
- Написали "Hello, world!" на Kivy.
Ссылки к статье
Оглавление
- Вступление
- Новая рубрика Python и C++ в Open source
- О фокусировке внимания
- Для чего мне приложение
- Идея приложения Kawai.Focus
- Функционал таймера Pomodoro
- Стек технологий
- Создание репозитория
- Начало работы над кодом проекта
- "Hello, world!" для Kivy
- Анонс на следующие статьи
- Заключение
- Ссылки к статье
Все статьи