Seite 1 von 1
Anderes Programm starten und zurückkehren
Verfasst: Samstag 9. Januar 2016, 22:49
von SteveDee
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.
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 10. Januar 2016, 10:03
von BlackJack
@SteveDee: Soweit ich mich erinnere kann man Navit in die eigene GUI integrieren. Ich glaube das ging irgendwie mit Umgebungsvariablen.
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 12:22
von SteveDee
Ist das auch bei Pygame machbar und wenn ja, erstelle ich dann ein Surface dafür oder wie ist das umzusetzen?
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 12:38
von Dav1d
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).
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 13:36
von SteveDee
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.
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 13:43
von Dav1d
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.
Warum dann PyGame, das sollte mit Qt auch gehen.
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 13:46
von SteveDee
Ich werd mich mal mit Qt befassen, danke für die Hilfe

Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 17:22
von SteveDee
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?
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()
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?
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 18:01
von Dav1d
Könnte an Qt.Process liegen, du solltest dafür besser das subprocess Modul verwenden: `navit_process = Popen([...], ...)`
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 18:38
von BlackJack
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()
Re: Anderes Programm starten und zurückkehren
Verfasst: Sonntag 17. Januar 2016, 20:45
von SteveDee
Mit dem Code hat es funktioniert.
Vielen Dank
