Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
PyQt6

Внедрение сторонних окон в интерфейс приложения на PyQt

18.01.2023, 08:40. Показов 1297. Ответов 9

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня есть задача разработать интерфейс, я решил выбрать PyQt в качестве инструмента для этой цели. Это что-то наподобие оконного менеджера. Я изучал этот вопрос и нашел множество оконных менеджеров, но это немного не то, что именно мне нужно. Там суть заключается в том, что у нас есть возможность манипуляции расположением и размерами окон и тд. Но в тоже время все окна открыты отдельно друг от друга. Моя же цель, если можно так выразиться - "объединить" все эти окна в одном общем окне, в котором будут определенные общие настройки. В PyQt есть замечательное средство "QDockWidget", которое позволяет создавать окна в виде областей, которые можно перемещать в пределах основного окна и прикреплять к разным его сторонам и даже вытягивать его из основного. Но загвоздка в том, что я не уверен, что внутри них можно отображать отдельные самостоятельные окна других приложений и написанные на любом другом языке. То есть мне не нужно связывать функционал самих приложений, а необходимо просто скомпоновать окна. Скажите, есть ли какое либо простое и лаконичное решение данной задачи, ну или не простое?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2023, 08:40
Ответы с готовыми решениями:

Запуск окон PyQT
У меня есть два кода с окнами, один хочу импортировать как модуль, чтоб при нажатие кнопки открывалось это окно

Ошибка при связке окон
import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QWidget class...

Изменение свойств сторонних окон
Здравствуйте, подскажите как, зная хендл какого-небудь стороннего окна, изменять его такие свойства по типу в VB Form.Top, Form.Left или...

9
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
18.01.2023, 20:39
"Отобрать" окно у другого приложения- это довольно сложная задача, тем более на Python (Не утверждаю, что невозможная ) Это надо перехватывать все так называемые сообщения, адресованные этому окну, от операционной системы, контролировать их, возможно чтото в них подменивать. QDockWidget это немного из другой области, там все виджеты "родные".
0
 Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
19.01.2023, 06:13  [ТС]
Эх, печально слышать.. А что если ограничить универсальность и сказать, что программы, которые мы будем интегрировать будут с графическим интерфейсом, который написан на С++ Qt? Тут тоже не все так просто? Нужен ли для этой цели исходный код программы С++?
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
19.01.2023, 15:14
Qt работает в рамках одного приложения. я бы сказал вам менеджер окон нужен типа тайловых, каких - это от ОС зависит
https://en.wikipedia.org/wiki/... ow_manager
https://www.reddit.com/r/windo... r_windows/

Добавлено через 23 минуты
Цитата Сообщение от Effex Посмотреть сообщение
А что если ограничить универсальность и сказать, что программы, которые мы будем интегрировать будут с графическим интерфейсом, который написан на С++ Qt? Тут тоже не все так просто? Нужен ли для этой цели исходный код программы С++?
MdiArea
https://evileg.com/ru/post/245/
1
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
19.01.2023, 21:23
Цитата Сообщение от Effex Посмотреть сообщение
А что если ограничить универсальность и сказать, что программы, которые мы будем интегрировать будут с графическим интерфейсом, который написан на С++ Qt?
Впринципе не особо важно на чём они написаны, ну разве что немного ресурсов ОС сэкономят (типа общие библиотеки используют). Тут главное, что они "чужие" друг для друга.
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
19.01.2023, 22:47
Лучший ответ Сообщение было отмечено Effex как решение

Решение

kapbepucm, есть пример,
QProcess запускает сторонний exe и получает идентификатор процесса
winApi получает дескриптор окна по идентификатору процесса
QWindow :: fromWinId (WId id) создает окно
https://russianblogs.com/article/71981280972/
но я не думал в эту сторону

Добавлено через 40 минут
https://www.pythonguis.com/tut... -programs/
ну вот этот пример работоспособен
2
 Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
20.01.2023, 10:53  [ТС]
vic5710, Спасибо за информацию, буду ковыряться)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
20.01.2023, 19:25
Effex, процессов вы можете запустить несколько, но вот как их свести в мозаику -
не вижу способа
0
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
20.01.2023, 19:33
получив идентификатор окна, мы можем окном управлять
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
21.01.2023, 00:10
КМК если для WIN pywinauto может помочь
https://habr.com/ru/post/323962/
в Linux этит тайловых манагеров полно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2023, 00:10
Помогаю со студенческими работами здесь

Активность окон сторонних программ
Как при открытых 2-х - 3-х программ (с одинаковым названием) назначить кнопке делать активным то или иное окно?

Получение координат окон сторонних приложений
Как получить массив rectangle всех окон, которые находятся на экране монитора? Или хотя бы где почитать о работе со сторонними окнами?

Автозапуск сторонних программ, консольных окон и т.д
Вот ссылка на проблему, детально: https://www.cyberforum.ru/windows/thread1754200.html Логи же в этой теме (все файлы *.log, которые...

Python + PyQt Многоязычный интерфейс программы
Привет Уважаемые форумчане ! Назрела необходимость добавить в программу возможность переключения языка интерфейса. Прошу Вашей помощи...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru