2016-04-12 8 views
0


Hallo alle zusammen!Warum MS Windows "Öffnen mit" Option nicht Bildpfad erkennen?

ich einfache GUI-Anwendung bin Codierung mit ...
- PyQt 5
- Python 3.4
- Windows 7

Mein Projekt hat "img" sub-Ordner, Symbolbilder enthält.

Zuerst habe ich Batch-Datei erstellt, um Programm im selben Ordner zu starten.

Dateiname: run_app.bat
Datei Text: py myapp.py

Diese Batchdatei ordnungsgemäß funktioniert. Aber diese Art der Ausführung zeigt cmd-Fenster und verschwindet, wenn das Programm myapp.py beendet ist. Ich möchte dieses Cmd-Fenster nicht anzeigen.

Also, ich habe "Öffnen mit" -Option und Link zu pythonw.exe. Dies hat auch richtig funktioniert, aber den Bildpfad nicht erkannt. So sind alle Icon-Bilder verschwunden.

Im Code verwendete ich den relativen Pfad wie 'img/open_dir.png'. Aber wenn ich den relativen Pfad auf den absoluten Pfad festgelegt habe und myapp.py mit "Öffnen mit" ausführen, werden die Symbole erneut angezeigt.

Was macht diesen Unterschied?

Ich möchte den relativen Pfad nicht zum absoluten Pfad ändern. Weil der Pfad des Programms von Zeit zu Zeit variieren kann.

Gibt es eine Möglichkeit, dieses Problem zu beheben?

Antwort

1

Relative Pfade sind immer relativ zum aktuellen Arbeitsverzeichnis. Dies ist nicht unbedingt das Verzeichnis, in dem sich Ihr Skript befindet, es sei denn, Sie haben cd in dieses Verzeichnis geschrieben und das Skript ausgeführt. Standardmäßig werden die meisten Programme mit einem aktuellen Arbeitsverzeichnis des Basisverzeichnisses des Benutzers gestartet.

Ein gängiges Idiom zum Erstellen von Pfaden relativ zum Skriptpfad ist die Verwendung des Attributs __file__ eines Python-Moduls. Dadurch können Sie weiterhin relative Pfade erstellen, die auch dann noch funktionieren, wenn Sie Ihre Imgs und Skripts in ein anderes Verzeichnis verschieben.

+0

Danke Brendan. Das allgemeine Idiom, um den relativen Weg zu konstruieren, den Sie vorgeschlagen haben, ist ein großer Hinweis! Mein Problem hat gelöst! – passion053