У меня есть приложение GUI, которое написано с использованием win API , и нам нужно запустить новое графическое приложение, когда пользователь выбирает некоторые пункты меню. Мы решили написать новое приложение в PyQt и запустить приложение PyQt usig Python C Api.Родительское окно, не получающее сообщения окна (ключевые события)
Все работает отлично, за исключением, что окно Родитель, через который мы запускаем PyQt приложение, не реагирует на некоторые события, когда приложение PyQt открыто. Как только мы закрываем приложение PyQt, он снова начинает отвечать на ключевые события.
Я предполагаю, что после запуска приложения PyQt Gui, как-то сообщения не передаются в родительское окно.
Осматривая с Spy ++ я нашел следующий результат:
Receives messages for:
- ALT key
- F1, F2 keys
- Mouse events
Does NOT receive messages for:
- CTRL key
- All other Fn keys
- All letter keys
- SHIFT, CAPS keys
Любые мысли, чтобы решить эту проблему, была бы оценена
Значит, вы имеете в виду, что родительское окно не является виджетами Qt? Как вы запускаете QApplication? В отдельном потоке? Вы справляетесь с клавишами F1, F2 в приложении ur Qt? – blueskin
Да родительское окно - это не QtWigget, полностью написанное с использованием окон C и WinAPI, а PyQt запускается путем встраивания интерпретатора python в этот C-код. – Maverick
Ну QApplication должен быть запущен вызовом exec(), который является блокирующим вызовом, поэтому я предполагаю, что вы запускаете его в отдельном потоке. И я ожидаю, что ни один из нажатий клавиш не будет отправлен в родительское окно, поскольку это не родительский виджет окна PyQt. – blueskin