-
pb passage arguments
Bonjours,
alors voila j'ai réalisé une petite visionneuse d'images en python avec Tkinter, PIL, tkFileDialog et sys. Tout marche impec quand je lance le script, je peux ouvrir des photos et les visionner nikel. Mais je voudrais aller plus loin et faire que quand on fait un <click droit> en ayant selectionné plusieurs images, on puisse ouvrir ces images avec mon logiciel.
J'ai donc :
self.picture = sys.argv[1:]
et apres tout ce qu'il faut pour ouvrir les images.
Cela fonctionne depuis la console quand je lance avec :
python Picture_viewer.py foto1.jpg foto2.jpg .....
Mais en ouvrant directement depuis l'interface graphique avec une command personnalisée :
'/home/.../Picture_viewer.py'
(apres avoir changé le droit d'éxécution du fichier)
mes photos s'ouvrent belle et bien mais chacune dans une <<version du script>> ouverte séparement (cf si j'ai ouvert 3 photos => trois fois l'application ouverte, chaque version contenant une des 3 photos)
Et donc je voudrais quee toutes s'ouvrent dans une seule application ...
Quelqu'un aurait la solution?
merci d'avance.
luffy
NB: Vous pouvez retrouver une de mes versions précédentes (assez ancienne^^) a :
http://luffy.luck.free.fr/dokuwiki-r...u.php?id=start
-
je pense qu'il faut que tu detecte quand tu as un instance de ton programme déjà lancé.
ou alors que tu divise tes agument en deux.
en premier tu ouvre le logiciel avec la première image.
puis au démarrage (lancement du prog) tu teste si tu as d'autre argument , si oui tu ouvre les images, sinon tu passes.
suis je assez clair?
++
-
Merci de la reponse
yop,
ouais je vois je fonctionnement, le plus facil en fait serait apparement de tester si j'ai deja une instance de l'application ouverte. Tu aurait une solution pour faire ca?
-
-
tanx
ouep merci en fait cela va m'aider a gerer l'ouverture de trop de programmes mais ducoup les photos qui auraient du s'ouvrirent ne s'ouvriront pas. Enfin bon ca c'est pas grave au pir je trouverai bien un moyen en passant par du shell.
merci de ton aide, et si jamais un jour il te viens une idée qui pourrait m'aider n'hésite pas.
luffy
-
tu peux ajouter la détection du nombre de param en scindant en 2 les arguments, comme je te l'ai dis plus haut.... c'est pas trés dur!
-
pb arg
En fait je ne penses pas que cela puisse marcher, peut-être que je me trompe, mais je pense que mon problème vient du fait que :
chaques photos (selectionnées avant le click droit->ouvrir...) correspondent au premier (et seul) argument passé a chaques instances qui s'ouvrent. Et ducoup, si je block l'ouverture du 2eme softs, je perds mon 2eme argument et ainsi de suite...
je sais pas si tu vois se que je veux dire ... ^^ je m'exprime pas très bien.
Ex: (parce que je pense pas que j'explique bien):
3 photos selectionnées( photo1.gif, photo2.gif ...):
instance 1 = ouverture de photo1.gif / photo1.gif unique argument
instance 2 = ouverture de photo2.gif / photo2.gif unique argument
instance 3 = ouverture de photo3.gif / photo3.gif unique argument
Ducoup en fait je galère, ce qu'il faudrait que j'arrive a faire c'est de faire comprendre que toutes les photos sélectionnées correspondent aux arguments d'une seule et même instance :?
merci encore de m'aider:D
luffy
-
il faut modifier ton prog pour qu'il accepte un nombre non defini d'argument.
vois du coté de "*arg" et "**kw" ou un truc comme ca!
a +
-
Resolu
Ouep j'ai résolu mon probleme, en fait cela ne venait pas du script mais du gestionnaire nautilus. Les arguments etaient envoyé 1 par 1 a différentes instances,
==> Solution telecharger Nautilus-action et définir une action spécifique, bloquer au cas ou l'ouverture du programme en double => creation mini serveur sur un port qui se contente d'exister (solution trouvée sur le net).
merci encore d'avoir repondu
Mon programme se trouve la si vous voulez voir la solution en détaille :
http://luffy.luck.free.fr/dokuwiki-r...ewer_in_python
(Code difficilement lisible sur le wiki : conseil => copier coller ^^)
luffy