Мышь Clickevents не регистрируется после встраивания Navit
В настоящее время я пытаюсь разработать бортовой компьютер для моей старой доброй Audi A4. Поэтому я пишу полноэкранное приложение с использованием Python Qt, и в этом приложении я хочу встроить Navit (открытую исходную систему навигации Navit Homepage) в свое программное обеспечение. На их вики-странице есть пример того, как встроить navit:
container = new QX11EmbedContainer(this);
QString wId = QString::number(container->winId());
setenv("NAVIT_XID", wId.toAscii(), 1);
process = new QProcess(container);
process->start("navit");
Поскольку я разрабатываю свой проект на Python, мой код является анологичным
def initNavit( self ):
container = QtGuit.QX11EmbedContainer( self )
container.setGeometry( 100, 20, 800, 480 )
container.show()
winId = container.winId()
process = QtCore.QProcess(container)
os.environ['NAVIT_XID'] = str( winId )
process.startDetached( "navit" )
Проект работает просто отлично, и встраивание работает НО, когда я нажимаю на приложение navit, тогда все события щелчка мышью кажутся уничтоженными. То есть я все еще могу двигать указатель мыши, но не могу щелкнуть -> ничего. Ничего в ОС ни в приложении.
Чтобы уточнить, это работало раньше (возможно, 5 раз из 100 тестовых прогонов - по-видимому, без изменений). Как только я закрываю приложение с помощью alt + f4, моя мышь снова работает отлично. Когда я кликаю по своему приложению, не нажимая на navit, оно все равно работает нормально. Запуск навит отдельно работает и без недостатков. Кроме того, когда я использую клавиатуру для управления навигацией, она тоже работает (даже после того, как щелчки больше не работают).
Важно иметь возможность управлять им с помощью мыши, потому что в моей машине он должен управляться с помощью сенсорного экрана.
Я запускаю это на Ubuntu для тестирования, но в основном он должен работать с rasbian, так как весь проект должен работать на моем Raspberry Pi 2.
Таким образом, актуальный вопрос, почему мои щелчки мыши игнорируются после запуска программы, как можно это исправить.
Вот еще один пример, где он не работает для меня.
import sys
import os
from PyQt4 import QtGui
from PyQt4 import QtCore
def main():
app = QtGui.QApplication( sys.argv )
w = QtGui.QWidget()
w.resize( 1024, 800 )
w.move( 0, 0 )
w.setWindowTitle( 'Simple Embedding Test' )
w.show()
container = QtGui.QX11EmbedContainer( w )
container.resize( 800, 600 )
container.move( 0, 0 )
container.show()
winId = container.winId()
process = QtCore.QProcess(container)
os.environ['NAVIT_XID'] = str( winId )
process.startDetached("navit")
sys.exit( app.exec_() )
if __name__ == '__main__':
main()
Большое спасибо за Вашу помощь