Найти - Пользователи
Полная версия: Структура многооконного приложения на PyQt/PySide
Начало » Python для новичков » Структура многооконного приложения на PyQt/PySide
1
xkein
Коллеги, подскажите, пожалуйста, где об этом можно почитать - нужна внятная статья на эту, а не бесконечный урок, где автор что-то свое рассказывает …

Именно структура многооконного приложения, а не структура проекта на диске в неком ide …
Поясную ситуацию, откуда возник вопрос (рисую свое первое приложение на PyQt и питоне вообще, но создавать собственные проекты и решать весьма сложные задачи приходилось)
шел таким путем:
1) сделал сначала одно “главное окно” - с большой глубиной вложения контейнеров (настройки генераторов документов, шаблоны, описания структур т т.п., - просто не знал сначала, как сделать его многооконным)
2) написал к этому mainWindow main_app со всем работающим функционалом
3) вынес все-таки один редактор в отдельный окно/класс …
когда стал пытаться делать управление окнами, - стразу стало понятно, что реализации многооконного приложения нужно знать общие правила для построения приложения - проекта.

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

может, ссылки на страницы, где это обсуждается , хотя бы

спасибо ответившим
py.user.next
xkein
но создавать собственные проекты и решать весьма сложные задачи приходилось
Это звучит неконкретно и может означать что угодно. Конкретно напиши “я сделал такую-то такую-то фигню, сделал её так-то и так-то, а работала она потом вот там и вот там с такими-то такими-то результатами”.

xkein
рисую свое первое приложение на PyQt и питоне вообще
Ну, PyQt сделано из Qt. Ты делал что-нибудь на Qt? Знаешь, как оно устроено вообще?

xkein
3) вынес все-таки один редактор в отдельный окно/класс
Что значит “отдельный окно/класс”?

xkein
2) написал к этому mainWindow main_app со всем работающим функционалом
Зачем написал, если это всё не работает? В чём смысл?
Звучит как “я строил пятиэтажку, построил сарай сначала, в нём один этаж, второй строить некуда, так как там крыша сарая идёт, вот думаю, что что-то не то у меня с курсами стоительства, везде про какой-то бетон пишут, арматуру какую-то, а мне-то нужна пятиэтажка, так-то я строитель крутой, просто на этой вот земле никогда не строил”.

Короче, очень большие подозрения, что ты не обладаешь квалификацией. Так что пиши объективно, что ты можешь, что ты не можешь, что ты знаешь и что ты не знаешь.
xkein
Я задал конкретный вопрос - правильные/ стандартные подходы к структуре многооконных приложения на под фреймворком PyQt/PySide, - дать ссылки на источники, где эти вопросы разбираются.
Если не знаете, как работает Qt-designer и как с его помощью строятся приложения, какие ошибки обычно делают начинающие, то зачем лезть в эту ветку и писать всякий бред?
Я пишу вопрос в ветке для новичков, это значит, что я не обладаю “достаточной квалификацией” для решения своих задач, учусь на своих ошибках, - я этого не скрываю, мен нужна именно консультация для начинающего питонщика….

Разработка с использованием QT-дизайнера имеет свою специфику, этот инструмент позволяет относительно легко и быстро нарисовать много окон (каждое генерится в Py-код в ООП-стиле в виде отдельного класса), которые потом импортируются (не уверен, что правильно использую терминологию) в “главный модуль”. В итоге возникла проблема сборки всего приложения из нескольких различных модулей, не уверен, что делаю приложение, как одну задачу, правильно, хочется найти источники, где именно это разбирается ….

Надеюсь, что на вопросы в ветке для новичков здесь отвечают не только менты ((…
Еще спасибо, всем, кто помогает новичкам в питоне.
Rodegast
> Структура многооконного приложения на PyQt/PySide

Я не думаю что это нужно вообще как то отдельно регламентировать, в любом случае всё зависит от конкретной ситуации. Основные принципы которых нужно придерживаться такие:
1) Используем дизайнер.
2) Должно быть одно основное окно унаследованное от QMainWindow
3) Подчинённые окна наследуются от QDialog
4) Для хранения иконок/шрифтов и прочего нужно использовать ресурсы.
py.user.next
xkein
Если не знаете, как работает Qt-designer и как с его помощью строятся приложения
С помощью Qt-дизайнера никакие приложения не строятся. Дизайнер автоматизирует только настройку окон, потому что окна эти можно делать вообще без дизайнера. А приложение - это не окна. Окна лишь отображают то, что происходит внутри приложения.

xkein
правильные/ стандартные подходы к структуре многооконных приложения
Большие сомнения есть, что ты понимаешь, о чём ты говоришь. Ты говоришь “я писал сложное чототама”, тебе говорят “а что ты писал?”, ты говоришь “да вы менты поганые! вы меня что, на чистую воду выводите?! я сейчас из-за вас возьму и пойму, что я, оказывается, нихера не умею”.

Ну, то есть ты спрашиваешь про какие-то окна, а спрашивать надо не про окна, а про то, что там внутри находится в программе и что в эти окна выводит потом что-то или читает с них что-то. Поэтому у меня и сомнения на твой счёт. Ты спрашиваешь не то, что нужно спрашивать.

xkein
когда стал пытаться делать управление окнами, - стразу стало понятно, что реализации многооконного приложения нужно знать общие правила для построения приложения - проекта.
Ну, и как ты стал делать управление окнами? через главное окно что ли?
Вообще там главное окно есть, но там есть и не главные окна. Но всё равно управление окнами происходит не через окна.

В общем, опиши задачу. Что ты пытаешься сделать? Задачу только опиши, не надо про какие-то окна писать, в которых ты не смыслишь ничего. Ты не описал задачу и спрашиваешь “а как мне её сделать на окнах?”. Кого сделать? Вот её вот эту штуку опиши.

xkein
Коллеги, подскажите, пожалуйста, где об этом можно почитать - нужна внятная статья на эту, а не бесконечный урок, где автор что-то свое рассказывает …
Да ты, наоборот, лучше вот эту свою гениальность куда-нибудь засунь подальше, потому что она тебе мешает воспринимать информацию. Ты с чего-то взял, что ты какой-то специалист, при этом вопросы у тебя ни к селу ни к городу. Кто тебя убедил, что ты там в чём-то разбираешься, я не знаю даже. Может, ты говношколу какую-нибудь прошёл типа скилбокс или наподобие и они тебе сертификат выдали, что ты теперь крут. Или же ты там делал для каких-то бухгалтерш что-то, на соплях слепил, а потом они тебе аплодировали стоя, какие-то несколько дур, которые вообще ничего не смыслят ни в чём. Вот это всё не показатель.

Какие ты программы написал - вот это показатель. А не написал нихера, так и не надо рассказывать, как ты можешь, как ты мог бы и так далее. Программирование не знает сослагательного наклонения.
xkein
Rodegast
> Структура многооконного приложения на PyQt/PySideЯ не думаю что это нужно вообще как то отдельно регламентировать, в любом случае всё зависит от конкретной ситуации. Основные принципы которых нужно придерживаться такие:1) Используем дизайнер.2) Должно быть одно основное окно унаследованное от QMainWindow3) Подчинённые окна наследуются от QDialog4) Для хранения иконок/шрифтов и прочего нужно использовать ресурсы.

Да, спасибо, именно так я и делаю.
Именно так у меня и сделано приложение, я и не знаю, как сделать его по-другому,
одно главное окно, один главный модуль, импортирующий класс этого окна, методы кнопок из этого класса запускают внешние модули, из которых запускаются какие-то ф-и и т.д.
В то же время я нашел красивый пример алгоритма взаимодействия нескольких окон, главный модуль там не является классом “главного окна”, там все как бы очень красиво, main.py только создает экземпляры окон из их классов и переключает управление между ими. Здорово, но это никак не соответствует моему представлению о построении приложения под Qt в виде главного модуля, импортирующего класс главного окна с добавлением методом виджетов….
В итоге возникло неуверенность, как вообще правильно строю свое первое приложение, написал здесь вопрос, как смог сформулировать, - некие шаблонные варианты структуры приложения с использованием QT-дизайнера…
Стандартов на структуру приложения, конечно, быть не может, в итоге я вижу разные варианты , как можно построить приложение, но нет ощущения, как правильнее, а полное ощущение, что по ходу придется все бесконечно менять по кругу .., хочется посмотреть типа статьи , где опытные разработчики на питоне делятся опытом, как они строят свои многооконные приложения, почему именно так лучше и т.п. … думал, получиться съэкономить время ()
В чатах по PyQt в основном спрашивают конкретику по методам разных виджетов …
Еще раз спасибо за ответ.

Rodegast
> В итоге возникло неуверенность, как вообще правильно строю свое первое приложение … полное ощущение, что по ходу придется все бесконечно менять по кругу

Если получившейся результат всех устраивает, то всё нормально. А “менять по кругу” тоже нормально, без этого ни одно серьёзное приложение не обходится ; )
xkein
Т.е. у всех так, не только у начинающих в питоне? )
нашел еще несколько примеров о создании связей в приложении из нескольких окон, в примерах классы окон состоят из одной кнопки и одной label для вывода сигнала из другого окна, в реальном приложении в классах десятки виджетов, тысячи строк кода обработки сигналов, как это корректно хранить и выдергивать , чтобы было удобно тестировать, отлаживать, развивать ….. видимо, здесь поможет только собственный опыт..
попробую найти в этом и положительные стороны )

Еще раз спасибо за ответы.

py.user.next
xkein
в примерах классы окон состоят из одной кнопки и одной label для вывода сигнала из другого окна, в реальном приложении в классах десятки виджетов, тысячи строк кода обработки сигналов, как это корректно хранить и выдергивать , чтобы было удобно тестировать, отлаживать, развивать
У тебя хотя бы есть понимание, что это должно быть отделено друг от друга? Ты что-нибудь слышал про MVC? Это не панацея и не решит прямо всё и просто такая примочка, но если ты и про это не знаешь, то тебе можно только посочувствовать. Такой великий гений и не знает про такие элементарнейшие вещи.

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

xkein
чтобы было удобно тестировать, отлаживать, развивать
Чтобы было удобно тестировать, отлаживать и развивать, окна должны быть отделены от логики. А логика строится потом самыми обычными способами, как строится любая логика в любой программе любой сложности.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB