Guten Abend,
Ich versuche zur Zeit mit Python die Navisoftware navit zu starten.
Ich möchte erreichen das das Navitfenster im vordergrund angezeigt wird.
Des Weiteren suche ich eine möglichkeit von navit aus wieder zu meinem Python fenster zurück zu kehren.
Anderes Programm starten und zurückkehren
@SteveDee: Soweit ich mich erinnere kann man Navit in die eigene GUI integrieren. Ich glaube das ging irgendwie mit Umgebungsvariablen.
Es scheint als gäbe es einen OpenGL Driver. laut Forum sollte man den 'enablen' können. Ich hab allerdings mal kurz den Code überflogen, es sieht so aus als könnte man den OpenGL treiber nicht mit eigenem Code sehr einfach integrieren. Theoretisch sollte es möglich sein den Treiber so umzubauen, dass das ganze in einen Framebuffer geschrieben wird, den du dann als Textur anzeigen könntest, das setzt aber vorraus das du OpenGL und C beherrscht.
An deiner stelle würde ich das Ganze mit Qt machen (je nachdem was du machen willst, dazu hast du ja nicht wirklich viel gesagt).
An deiner stelle würde ich das Ganze mit Qt machen (je nachdem was du machen willst, dazu hast du ja nicht wirklich viel gesagt).
the more they change the more they stay the same
Ich hab eigenlich nur vor Navit in ein Programm einzubinden, damit ich dann z.B. zurück zu meiner Musikfunktion wechseln kann, da das Lied wechseln und dann wieder zur Navigation zurückkehren.
C Kentnisse habe ich etwas aper OpenGL so gar nicht.
C Kentnisse habe ich etwas aper OpenGL so gar nicht.
Warum dann PyGame, das sollte mit Qt auch gehen.SteveDee hat geschrieben:Ich hab eigenlich nur vor Navit in ein Programm einzubinden, damit ich dann z.B. zurück zu meiner Musikfunktion wechseln kann, da das Lied wechseln und dann wieder zur Navigation zurückkehren.
the more they change the more they stay the same
Also ich bin jetzt so weit das Navit in meiner Anwendung mit Qt angezeigt wird.
Jedoch friert die Anwendung ein so bald ich irgendwo hin klicke.
Muss ich irgendwie noch erlauben das ich das eingebundene kontrollieren kann oder woran kann das liegen?
Edit: Es scheint wohl zu reagieren, braucht aber eine Minute oder so, kann man dem Process mehr Resourcen zuweisen, oder gibt es andere Möglichkeiten um das zu beschleunigen?
Jedoch friert die Anwendung ein so bald ich irgendwo hin klicke.
Muss ich irgendwie noch erlauben das ich das eingebundene kontrollieren kann oder woran kann das liegen?
Code: Alles auswählen
# ...
app = QtGui.QApplication(sys.argv)
menu = QtGui.QWidget()
menu.resize(800,480)
container = QtGui.QX11EmbedContainer(menu)
container.resize(800,480)
container.show()
winId = container.winId()
os.environ["NAVIT_XID"] = str(winId)
print(str(winId))
process = QtCore.QProcess(container)
process.start("navit")
menu.show()
Zuletzt geändert von Anonymous am Sonntag 17. Januar 2016, 18:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Könnte an Qt.Process liegen, du solltest dafür besser das subprocess Modul verwenden: `navit_process = Popen([...], ...)`
the more they change the more they stay the same
Das kann ich nicht nachvollziehen. Weder bei `QProcess` noch bei `subproces.Popen` habe ich irgendwelche Warte- oder Denkzeiten beim Programm.
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
import os
import sys
from subprocess import Popen
from PyQt4 import QtGui
def main():
application = QtGui.QApplication(sys.argv)
navit_window = QtGui.QX11EmbedContainer()
navit_window.resize(800, 480)
os.environ['NAVIT_XID'] = str(navit_window.winId())
_navit_process = Popen(['navit'])
navit_window.show()
sys.exit(application.exec_())
if __name__ == '__main__':
main()