Всем привет, в этой статье я хочу рассказать о своем приложении для генерации QR-кодов.

Краткое описание: приложение называется MyQR, скачать для ПК можно на GitHub или на сайте проекта (фактически тоже GitHub). Написан проект на языке программирования Python, с использованием библиотеки PyQT5.

Скриншот приложения
Скриншот приложения

Функции приложения:

  • Генерация QR-кодов. Конечно, это основная функция. Приложение поддерживает создание кодов из различных типов данных: текст, ссылки, изображения, СМС, номера телефонов, контакты из телефонной книги, e-mail, геолокации или Wi-Fi сети. Самое интересное - генерация QR-кода с изображением. При создании такого кода изображение (для кодирования изображения необходимо ввести путь к нему) загружается на google-drive, и сгенерированный QR-код содержит ссылку на него.

  • Изменение стилей. Несомненно, это тоже важная функция. После создания кода, пользователь может изменить некоторые его параметры: масштаб изображения (в приложении он не виден, но при сохранении кода в изображение он учитывается), цвет фона, цвет кода, размер рамки и тип (сейчас доступны только обычные и micro-QR коды). Также можно изменить форму кода - доступны квадраты, точки, скругленные углы и даже ромбы.

  • Сохранение. После настройки всех параметров, сохраните полученный QR-код в удобном месте и расширении.

Окно печати
Окно печати
Окно пакетной генерации
Окно пакетной генерации

Система пакетной генерации. Безумно важная функция для бизнесменов. Импортируйте CSV файл с данными и создайте большое количество кодов нажатием одной кнопки, а перед этим настройте единый стиль для всех созданных кодов. Все они сохранятся в одной папке, выбранной пользователем.

Это небольшой проект, и я выкладываю статью здесь для того, чтобы узнать мнение других людей. Оставьте комментарий о моем проекте, скажите, важен ли он для общества или мне стоит заняться чем-то другим.

Комментарии (13)


  1. FurySeer
    16.07.2025 12:59

    Отличная штука, ты молодец, продолжай в том же духе!


  1. danilovmy
    16.07.2025 12:59

    ну во первых это просто GUI "для генерации QR-кодов через segno"

    Во вторых, где хотя бы requirements.txt что бы самому проинсталлировать и пользоваться.

    Во третьих, стоит все же убрать google credentials.


  1. visuospatial
    16.07.2025 12:59

    хороший проект, тем более для такого возраста. дальше — больше. уже с ранних лет пилишь пет-проект, выкладываешь на гитхаб и публикуешь статью на хабре. лично я считаю, что это уже достижение

    возможно прилетят синьоры-помидоры, которые кидаются грязью, но ты их не слушай, если не конструктивная критика.

    а насчет проекта. спроса именно на твой проект не будет велик, поэтому если ты рассчитывал на какой-то поток дохода, то его скорее не будет.

    П.С. сайт тоже прикольный. малой уже разбирается в лэндинг-маркетинге. желаю только удачи!


  1. vladislav_lukashenko
    16.07.2025 12:59

    Люблю питон, не смог пройти мимо. Очень хороший код, структурированный, удобный для пользователя и расширяемый.

    Что сказать про плюсы:

    Гибкая архитектура: код разбит на логические модули (QR, HistoryManager, диалоги), что упрощает масштабирование и сопровождение.

    Система истории: реализовано сохранение данных и стилей для повторного использования.

    Стилизация интерфейса: оформлено в виде CSS-стилей (QSS), что делает UI современным и чистым.

    Обработка ошибок: почти все действия обернуты в try-except, ошибки отображаются пользователю через QMessageBox.

    Проверка зависимостей при старте: предотвращает запуск без нужных модулей.

    Режимы генерации QR-кодов: поддержка разных сценариев (телефон, SMS, WiFi, изображение и др.).

    Проверка наличия директорий перед запуском (qrs, files, crypto_keys).

    Что можно было бы улучшить:

    • В __prepare_data есть повторяющийся блок для Email:

    elif self.current_type == 2:  # Email
        ...
    elif self.current_type == 2:  # Email
        ...

    Удали один блок.

    • is_big в __upd_radio__

    self.current_style["is_big"] = not (radio_check_1 and not radio_check_2)

    Это запутанная логика. Гораздо понятнее:

    self.current_style["is_big"] = self.ui.radioButton_2.isChecked()
    • Методы вроде make_qr() или set_style() выполняют и: подготовку данных, вызов генератора, стилизацию, и UI-отображение. Можно разделить бизнес-логику и GUI, чтобы упростить тестирование и повторное использование.

    • Повтор self.__upd_list__() в make_qrВызывается каждый раз перед генерацией QR, хотя логически это должно происходить при смене типа, а не при генерации. Это может запутать.

    • Жёстко зашитые пути

    f"C:\\Users\\{user}\\Documents\\MyQR.png"

    Лучше использовать os.path.join(os.path.expanduser("~"), "Documents", "MyQR.png")

    • Можно добавить минимальные unit-тесты для HistoryManager, QR, и отдельных функций.


    1. vindy
      16.07.2025 12:59

      Вы бот/использовали чатгпт, да?


      1. vladislav_lukashenko
        16.07.2025 12:59

        Обидно немного. Но каюсь, использовал его чтобы структурировать ответ. Так как, чукча, как говорится, может и писатель но так себе. А вот проектик то поковырял и не только чтобы пальцем, во внутряночку глянул


        1. vindy
          16.07.2025 12:59

          Извините, если обидно, просто немного мозоль кровит от этих ии оборотов речи. Ничего личного:)


          1. vladislav_lukashenko
            16.07.2025 12:59

            та блин, а че лучше чтоль мое косноязычие читать?)) ахаха. Первый пост и предыдущий если сравнить, первый мне нравится больше


          1. sintech
            16.07.2025 12:59

            И буква ё еще выдает нейро-тексты.


  1. Kolner
    16.07.2025 12:59

    Классный пет-проект, удачи тебе в дальнейших начинаниях!


  1. 3draven
    16.07.2025 12:59

    Молодец!


  1. 4kirill20
    16.07.2025 12:59

    Наконец-то офлайн приложение! Спасибо

    Онлайн сервисы не устраивали. Тестировал ПО на ПК, но все были плохи

    Рекомендую в заголовок добавить «…для ПК» — для улучшения SEO поиска


  1. apevzner
    16.07.2025 12:59

    Очень крутой проект, с учётом возраста разработчика.

    Пара мелких придирок.

    Комментарии лучше писать по-английски. Иначе придет иностранный человек, захочет закинуть PR и не сможет разобраться. PR-ы от незнакомцев очень ценны, они означают, что проект обрастает своим сообществом (а автор проекта - лидер этого сообщества). Их надо всячески привечать (но не в ущерб качеству кода, приносимого незнакомцами).

    Сами по себе коментарии должны отвечать на вопрос "что?" (что делает это место кода?). И, иногда, "зачем?" и "почему?". На вопрос "как?" отвечает сам код.