Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
PyQt6

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

18.01.2023, 08:40. Показов 1274. Ответов 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
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
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
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
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
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru