Comment puis-je fermer une image affichée à l'utilisateur avec le Python Imaging Library?
J'ai plusieurs images que je voudrais montrer à l'utilisateur avec Python. L'utilisateur doit entrer une description, et puis la prochaine image à afficher.
C'est mon code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, glob
from PIL import Image
path = '/home/moose/my/path/'
for infile in glob.glob( os.path.join(path, '*.png') ):
im = Image.open(infile)
im.show()
value = raw_input("Description: ")
# store and do some other stuff. Now the image-window should get closed
Il est au travail, mais l'utilisateur doit fermer l'image de lui-même. Pourrais-je obtenir python pour fermer l'image après la description a été entré?
Je n'ai pas besoin de PIL. Si vous avez une autre idée avec une autre bibliothèque /bash-programme (avec sous-processus), ce sera bien aussi.
OriginalL'auteur Martin Thoma | 2011-07-17
Vous devez vous connecter pour publier un commentaire.
La
show
méthode "est principalement destiné à des fins de débogage" et engendre un processus externe pour lesquelles vous n'avez pas à obtenir une poignée, de sorte que vous ne pouvez pas le tuer d'une manière appropriée.Avec PIL, vous pouvez utiliser l'une de ses interfaces des modules , tels que
ImageTk
,ImageQt
ouImageWin
.Sinon, manuellement frayer une visionneuse d'image à partir de Python, avec la
subprocess
module:oui, j'ai oublié le
[]
, désolé.comment aurais-je utiliser l'aperçu sur OSX que
some_viewer
?OriginalL'auteur Fred Foo
psutil pouvez obtenir le pid de la
display
processus créé parim.show()
et de tuer le processus avec qui pid sur chaque système d'exploitation:psutil devrait fonctionner sous OS X. Veuillez décrire votre problème sur le projet problème de tracker.
Après
proc.name
une méthode de sorte que vous pouvez l'appeler commeproc.name()
, et alors seulement, fonctionne. Veuillez les corriger et de vous et vous obtenez un vote.voir le commentaire précédent.
dans les versions plus récentes de psutil
proc.name
est une méthode plutôt qu'une chaîne de propriété. Si l'on vérifie le nom de la propriété, le script se termine sans effet, parce qu'ils ressembler à quelque chose comme ceci:<bound method Process.name of <psutil.Process(pid=14358,name='display') at 19774288>>
Merci de souligner ce point, j'ai mis à jour ma réponse. Heureusement, personne ne voyage plus que dans le futur.OriginalL'auteur Bengt
J'ai modifié cette recette avant pour faire un certain travail sur l'image en Python. Il utilise
Tkinter
, de sorte qu'il ne nécessite pas de tous les modules d'ailleurs PIL.ImageTK devrait venir avec PIL... Vous pouvez modifier la fenêtre et ajouter un champ de texte et le bouton si vous le souhaitez. Mon
Tkinter
est très vieux, j'ai l'habitude d'utiliserwx
.OriginalL'auteur Nick T