LINUX.ORG.RU

Первое приложение на PyQt

 , ,


1

2
Первое приложение на PyQt

PyQt

Написал на праздниках, фактически, первое приложение на PyQt - spectranalysis, выложил исходники на GitHub. Сразу отмечу, что это pet project, цель которого в ознакомлении с инструментами.

Прошу покритиковать код.

Предыстория: несколько лет пишу софт для предприятия на C# и WinForms + PostgreSQL, так же экспериментальный софт на Django. Пользователей - примерно 15-20 человек, но коллег-программистов нет, так что воюю в поле один, и код мой никого не интересует. Это сильно огорчает.

Параллельно программирование требуется для моделирования в аспирантуре. На кафедре преимущественно matlab + word, но я как ренегат, практически все выполняю на python (в связке с numpy, scipy, matplotlib, Sage Math) + latex.

Хотелось бы в будущем, при наличии свободного времени, присоединиться к разработке какого-либо открытого проекта, попробовать себя в командной разработке. Пока времени мало, уделил пару дней этому тестовому проекту.

О программе: на вход (Ctrl+O) должен поступать wav-файл с отсчетами квадратурных компонент какого-нибудь радиосигнала. Пример можно скачать из открытого источника (например, wav-файл для сигнала такого-то или wav-файл для другого сигнала). Получив файл, программа строит график спектральной плотности мощности, и спектрограмму.

По ходу разработки, меня расстроило отсутствие в PyQt искаропки виджета для редактирования свойств объекта (в .net это называется PropertyGrid). Вот тут рекомендуют для этих целей использовать pyqtgraph, да, но мне казалось, что такой популярный инструмент должен быть в стандартной поставке.

P.S. Для запуска main.py в системе требуется: python3, pyqt5, numpy, scipy и matplotlib.

Окружение

Arch, KDE, Cairo Dock, KDE Connect. Последний очень удобен:

  • Быстро залить на телефон музыку/слить фотки - приятно, что, Connect, во-первых не лагает как MTP, во-вторых не требует подключения шнуром.
  • Отображает уведомления из мессенджеров и sms - очень удобно.
  • Ставит воспроизведение фильма на паузу при входящем звонке, по завершению звонка продолжает воспроизведение - чрезвычайно удобно!

Еще скриншоты: krusader, amarok, и традиционный скриншот. Эти же скриншоты на другом хостинге.

>>> Просмотр (2560x1440, 2114 Kb)

★★

Проверено: JB ()
Ответ на: комментарий от HashDerpy

Точно? Сейчас перепроверил - у меня работает. На всякий случай добавил зеркало на imgur.

omegatype ★★ ()
Ответ на: комментарий от omegatype

Лучше давать прямые ссылки, например с того же 0x0.st.

По скриншоту — мило, даже не совсем ШГ.

HashDerpy ()

меня расстроило отсутствие в PyQt искаропки виджета для редактирования свойств объекта (в .net это называется PropertyGrid).

Так это проблема Qt, а не PyQt.

Хотелось бы в будущем, при наличии свободного времени, присоединиться к разработке какого-либо открытого проекта, попробовать себя в командной разработке. Пока времени мало, уделил пару дней этому тестовому проекту.

Посмотри на Anki.

EXL ★★★ ()

Круто. Правда, круто. Это первый стоящий проект на PyQt5 на моей памяти.

// На скриншоты не смотрел.

r3lgar ★★★ ()

main.py:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

Вторую строчку не нужно, ежели это py3.

P.S. Аналогично и в других файлах.

KernelPanic ()
Последнее исправление: KernelPanic (всего исправлений: 1)
Ответ на: комментарий от KernelPanic

Так как раз нужно же.
У меня из-за отсутствия её проблемы с локалью были когда-то (год назад).

evilface ★★ ()

Среда разработки какая? В ней есть визард создания типовых проектов для Python «HellowWorld»: Qt, Gtk, console?

TechnoMag ()
Ответ на: комментарий от TechnoMag

Судя по скрину, PyCharm от JetBrains.

http://imgur.com/KvVV5Oe вот дефолтный выбор при создании проекта.

Многого лично я сказать не могу о среде, так как студенческую лицензию хоть и имею что на неё, что на CLion, но слишком привык к виму.

В целом, продукты вполне себе годные, очень многое умеют.

evilface ★★ ()
Ответ на: комментарий от fluorite

А это точно входит в стандартную поставку Qt?

EXL ★★★ ()
Ответ на: комментарий от EXL

Сначала они ноют, что Qt разбух, потом ноют, что в основных либах нет нужного функционала. Репа официальная, этого не достаточно?

fluorite ★★★★ ()
Ответ на: комментарий от RazrFalcon

Тогда это нисколько не проблема PyQt. Привязаться ведь не к чему.

Хотя сейчас погрепал, оно вроде в компоненты QtDesigner / QtDesignerComponents запихнуто.

EXL ★★★ ()
Ответ на: комментарий от fluorite

Репа официальная, этого не достаточно?

Ну надо же. А вот, смотри, игруля там есть:

http://code.qt.io/cgit/{non-gerrit}/qt-labs/wolfenqt.git/tree/

Сначала они ноют, что Qt разбух, потом ноют, что в основных либах нет нужного функционала.

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

Ты начал бухтеть про раздутость. Я же не в qtbase/qwidgets засунуть его прошу.

EXL ★★★ ()
Ответ на: комментарий от EXL

Я начал бухтеть? Это твоя вечная песня про жирнокьют. И ты ничего не спрашивал, ты про какие-то проблемы Qt начал вещать. Нет биндингов — shiboken (ну или что там сейчас) в зубы, и вперёд.

p.s. Вот нашлось чего-то.

fluorite ★★★★ ()
Последнее исправление: fluorite (всего исправлений: 1)

Написал на праздниках, фактически, первое приложение на PyQt - spectranalysis, выложил исходники на GitHub.

Выглядит хорошо, держите нас в курсе успехов)

практически все выполняю на python (в связке с numpy, scipy, matplotlib, Sage Math) + latex

Я серьезно, буду следить за программами и давать в качестве примера студентам. Такие ренегаты нам очень нужны))

aquadon ()
Ответ на: комментарий от fluorite

И ты ничего не спрашивал, ты про какие-то проблемы Qt начал вещать.

Под проблемой я подразумевал не отсутствие этого виджета в qtbase, а «нет этого виджета в стандартной поставке Qt == не будет этого виджета и в PyQt». Проблема в этом понимании не несёт абсолютно никакого негативного контекста, который ты уже успел унюхать.

Это твоя вечная песня про жирнокьют.

А между прочим, вот этот виджет в несколько раз полезнее насильственной линковки QtGui к OpenGL. И было бы неплохо, если бы в стандартной поставке Qt были какие-нибудь QtWidgetsExt с такими вот сложными виджетами. Собственно, такой проект уже давно был: Qxt, но он успешно загнулся, хотя некоторые GUI-элементы там были расширены. До сих пор иногда посматриваю в его исходники.

EXL ★★★ ()
Ответ на: комментарий от fluorite

Нет биндингов — shiboken (ну или что там сейчас) в зубы, и вперёд.

Знаешь ли, не очень удобно человеку, который недавно начал строить Pet-проекты на PyQt, с лёту начать разбираться во внутренней Qt-кухне сборки этих либ под три основные ОС и отныне и во веки веков таскать их всюду с собой. А когда минорная версия Qt значительно бампнется, снова их пересобирать.

// Это к тому, что будь они доступны в распространяемых The Qt Company бинарных пакетах, ему было бы куда как проще заюзать этот виджет.

EXL ★★★ ()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от evilface

У меня из-за отсутствия её проблемы с локалью были когда-то (год назад).

Вероятно, тогда ты использовал py2.x.

В py3, по дефолту, ВСЕ строки - юникод-строки.

KernelPanic ()
Ответ на: комментарий от KernelPanic

Я никогда не использовал python2. Я в него не умею.

Делал нечто под веб, использовал его как cgi, не получалось нормально без этого обрабатывать пользовательский ввод, превращался во что-то непотребное.

evilface ★★ ()

KDE Connect. Последний очень удобен:

Нет, не очень.

Быстро залить на телефон музыку/слить фотки - приятно

Расшаренной папки вполне хватает...

Отображает уведомления из мессенджеров и sms - очень удобно.

Вот только оно не работает! Срабатывает с шансом 10% - даже не смешно.

Ставит воспроизведение фильма на паузу

Вот это все что оно стабильно умеет

По этому удобно, но не очень...

Ну еще управление курсором тема... Особенно с планшета.

LinuxDebian ★★ ()
Последнее исправление: LinuxDebian (всего исправлений: 1)

Параллельно программирование требуется для моделирования в аспирантуре. На кафедре преимущественно matlab + word, но я как ренегат, практически все выполняю на python (в связке с numpy, scipy, matplotlib, Sage Math) + latex.

Так у них там, наверное, винда?

hotpil ★★ ()
Ответ на: комментарий от aquadon

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

И менее наглядные Note on autocorrelation estimation in Sage Math, Notes on «Intuitive Probability and Random Processes using MATLAB» и Наивный способ построения фрактала Мандельброта в Sage Math и Matlab.

omegatype ★★ ()
Ответ на: комментарий от TechnoMag

PyCharm, по поводу визардов не уверен. Конкретно этот простой проект начинался в блокноте. Кстати, разве от визардов новых проектов есть большая польза? Ведь «создание нового проекта» - достаточно редкое действие.

omegatype ★★ ()
Ответ на: комментарий от TwisteR

Ну в общем, как PropertyGrid из .Net - обожаю этот компонент. Кстати, а что скажете об аналогичном компоненте из pyqtgraph?

omegatype ★★ ()
Ответ на: комментарий от LinuxDebian

Расшаренной папки вполне хватает...

Расшаренной каким именно образом?

Вот только оно не работает!

Лично такого не наблюдал. Бывали глюки - девайс самопроизвольно делал unpair от компьютера. Приходилось опять руками делать pair, но неработающие уведомления - такого не было.

Ну еще управление курсором тема...

А вот этого я категорически не понимаю. Зачем это нужно, когда рядом мышь?!

Кстати, добавлю в список фич multimedia control - возможность с телефона ставить на пазу, менять треки, перематывать и менять громкость у текущего проигрывателя (у работает с VLC и Amarok).

omegatype ★★ ()
Ответ на: комментарий от omegatype

Расшаренной каким именно образом?

Самба

девайс самопроизвольно делал unpair от компьютера

не девайс а kde connect на девайсе наверное? Не наблюдал такого тоже.

Зачем это нужно, когда рядом мышь?!

Сел на диван посмотреть фильм... можно рисовать пальцем в гимпе :)

А смс у меня не работают к сожелению, может глюк со стороны смарта, но один хрен — кде коннект с обеих сторон...

LinuxDebian ★★ ()
Ответ на: комментарий от LinuxDebian

Самба

Да, в принципе, это будет работать. Но тогда ведущая роль отдается телефону - там, где в случае с connect, операция выполняется на большом экране компьютера с полноценной мышью и клавиатурой, для самбы придётся тыркаться в скромный андроидовский проводник. И в этом случае манипуляции с файлами будут ограничены расшаренными директориями, что имеет свои, наверное, минусы и плюсы.

omegatype ★★ ()

но я как ренегат

о, один в поле воин! респект.

понравился скрин с самописным софтом и спектральным анализатором. это вам не мп3шки на линуксе слушать:)

Хотелось бы в будущем, при наличии свободного времени, присоединиться к разработке какого-либо открытого проекта

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

p.s.

а обои, прости, отстой. лучше б для скриншота что-то стильное найти.

crypt ★★★ ()
Ответ на: комментарий от crypt

а обои, прости, отстой.

Это же космос! От всегда прекрасен.

RazrFalcon ()
Ответ на: комментарий от crypt

Не просто найти обои, которые не отвлекали ли бы. До этого долгое время использовал вот эти дефолтные обои из KDE. А скрине просто нарезка какого-то фото с http://hubblesite.org/images

И да, реквестирую примеров стильных обоев! :D

omegatype ★★ ()
Ответ на: комментарий от omegatype

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

TechnoMag ()
Ответ на: комментарий от omegatype

Не просто найти обои, которые не отвлекали ли бы

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

https://fccomputing.files.wordpress.com/2010/03/unix_test.png (но это тебе по цвету не пойдет)

И да, реквестирую примеров стильных обоев! :D

такого типа или такого:

www.linux.org.ru/gallery/screenshots/10781857 www.linux.org.ru/gallery/screenshots/10429517

crypt ★★★ ()
Ответ на: комментарий от RazrFalcon

ну да, у тебя вкусовщина, а у меня хороший вкус:)

crypt ★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)