Seite 1 von 1
QX11EmbedContainer mit Navit in QStackedWidget
Verfasst: Donnerstag 17. März 2016, 13:29
von SteveDee
Guten Tag,
ich versuche der Zeit Navit, welches durch einen QX11EmbedContainer eingebunden wird in einem QStackedWidget anzuzeigen.
Leider sieht man überhaupt nichts und wenn man das Programm beendet kommt die Meldung (QProcess: Destroyed while process is still running).
Folgenden Code habe ich dazu verwendet:
Code: Alles auswählen
navit_window = QtGui.QX11EmbedContainer()
navit_window.resize(800, 480)
os.environ['NAVIT_XID'] = str(navit_window.winId())
process = QtCore.QProcess(navit_window)
process.start("navit")
navitPage = self.stack.addWidget(navit_window)
Das ändern des aktuellen Widgets funktioniert auch, nur leider sehe ich dann nur mein Hintergrundbild und nichts von Navit....
Re: QX11EmbedContainer mit Navit in QStackedWidget
Verfasst: Montag 21. März 2016, 18:48
von SteveDee
Code: Alles auswählen
class NaviWidget(QtGui.QX11EmbedContainer):
def __init__(self, parent=None):
super(NaviWidget, self).__init__(parent)
navit_window = QtGui.QX11EmbedContainer(self)
navit_window.resize(800, 440)#480
navit_window.
os.environ['NAVIT_XID'] = str(navit_window.winId())
print(str(navit_window.winId()))
global process
process = Popen(['navit'])
So bekomme ich jetzt das Navit Fenster eingebettet, jedoch freezt die ganze Anwendung und ich kann sie nur noch killen.
Jemand eine Idee woran das liegen kann?
Re: QX11EmbedContainer mit Navit in QStackedWidget
Verfasst: Dienstag 22. März 2016, 00:29
von jerch
@SteveDee:
Hmm, ich habe versucht, das Ganze mit PyQt als auch mittels Qt in C++ nachzuspielen. Jedesmal hängt sich der ganze Spass auf, während es z.B. mit xterm problemlos funktioniert. Ich vermute einen Bug in navit und dessen mouse event handling. Hab es aus Zeitgründen nicht weiter verfolgt, als Ansatz könntest Du z.B. mal debuggen, wie navit auf X11-Ebene die Maus bzw. deren Fokus behandelt.
Re: QX11EmbedContainer mit Navit in QStackedWidget
Verfasst: Sonntag 27. März 2016, 14:02
von SteveDee
Also ich habe jetzt herausgefunden, das so bald der EmbedContainer ein QWidget als parent hat, zwar angezeigt wird aber dann das Programm freezt.
Wird jedoch nur der Container angezeigt geht alles.
In meinem Programm in Verbindung mit dem QStackedWidget wird jedoch bei beiden Fällen kein Container angezeigt.
Re: QX11EmbedContainer mit Navit in QStackedWidget
Verfasst: Sonntag 27. März 2016, 15:32
von SteveDee
Code: Alles auswählen
def main():
application = QtGui.QApplication(sys.argv)
win = QtGui.QWidget()
win.resize(800,480)
container = QtGui.QX11EmbedContainer(win)
container.resize(800,480)
container.show()
os.environ['NAVIT_XID'] = str(container.winId())
print(str(container.winId()))
process = QtCore.QProcess(container)
process.start("navit")
win.show()
sys.exit(application.exec_())
if __name__ == '__main__':
main()
Habe ein bisschen rumprobiert und dieser Code zeigt den Container an, freezt jedoch die Anwendung.
Wenn ich das QWidget weglasse, geht es jedoch aber das bring mir nichts.
Wie kann es denn sein das der EmbedContainer nicht mehr richtig funktioniert so bald es ein parent Element gibt?