Qr генератор на python
Table of Contents
Некоторое время назад я написал статью, где показывал построение простого виджета часов на tkinter. Если кто-то не помнит, то tkinter - это кроссплатформенная библиотека для разработки графического интерфейса на языке Python.
И в то или иное время у меня возникает потребность в написании простых программ, и неважно, будь это прямая потребность или просто желание постучать пальцами по клавиатуре. По мимо этого я люблю копаться в репозитории библиотек python.
Среди всего этого разнообразия пакетов мне приглянулся PyQRCode. Из названия очевидно, что этот пакет предназначен для работы с qr кодами. Потому давайте напишем простую программу для генерирования qr по введённому url. Сразу скажу, что напишем две версии: консольную и с графическим интерфейсом.
Для начала давайте инсталлируем необходимый пакет:
Теперь перейдём непосредственно к написанию кода. Импортируем необходимые модули, при этом не забыв в начале файла прописать путь для интерпретатора:
Прописываем приглашение в командной строке. Затем создаём переменную URL, где мы можем указать необходимый адрес, для последующей генерации qr. В данном кусочке кода create отвечает за непосредственную генерацию.
К примеру достаточно вот такой строчки для генерации qr кода гугла:
Затем задаём параметры(например размер) отображения:
И создаём рамки вокруг кода, если это необходимо:
Должно получиться примерно вот так:
Закончив с консольной версией, приступим к построению графического интерфейса. Сделаем это в отдельном файле, во благо удобства. Судя по началу статьи очевидно, что будем использовать tk.
Импортируем библиотеки
Инициализируем окно и заголовок:
Создаём функцию, где указываем все параметры, такой подход необходим для возможного дальнейшего масштабирования программы. По мимо аргументов в функции генерации создадим вывод сообщения об ошибке:
Сгенерированые данные передадим функции showCode. Её задача проста - выводить qr код с введённым url:
Зададим формы и элементы:
И естественно прописываем mainloop:
В итоге получаем следующее:
А что если пользователю предоставить возможность выбирать режим? Рациональнее предложить интерфейс выбора, чем вручную выбирать необходимый файлик. Потому давайте создадим этот интерфейс, в файле choise.py напишем следующее:
А именно: делаем инпут по вопросу о выборе режима. В зависимости от выбранной буквы(в не зависимости от регистра) импортируем код либо терминальной версии ,либо графической. В качестве cli-версии импортируем файл cli без префикса “.py”, аналогично импортируется gui(пакет main). А в случае неправильно введённой переменной просим пользователя ввести правильную букву.
Думаю, что получилось неплохо. Традиционно код программы расположен в моём GitHub аккаунте. Буду рад любым предложениям и критике , как в комментариях, так и в issues или pull request.