如何使用 Python 图像库关闭显示给用户的图像?

新手上路,请多包涵

我有几张图片,我想用 Python 向用户展示。用户应该输入一些描述,然后应该显示下一张图片。

这是我的代码:

 #!/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

它正在工作,但用户必须自己关闭图像。输入描述后,我可以让 python 关闭图像吗?

我不需要 PIL。如果您对另一个库/bash 程序(带有子进程)有其他想法,那也很好。

原文由 Martin Thoma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 671
2 个回答

show 方法“主要用于调试目的”并生成一个您没有句柄的外部进程,因此您无法以正确的方式杀死它。

对于 PIL,您可能希望使用其 GUI 模块之一,例如 ImageTkImageQtImageWin

否则,只需使用 subprocess 模块从 Python 手动生成图像查看器:

 for infile in glob.glob( os.path.join(path, '*.png')):
    viewer = subprocess.Popen(['some_viewer', infile])
    viewer.terminate()
    viewer.kill()  # make sure the viewer is gone; not needed on Windows

原文由 Fred Foo 发布,翻译遵循 CC BY-SA 3.0 许可协议

psutil 可以获取 displayim.show() 创建的进程的 pid,并在每个操作系统上使用该 pid 终止进程:

 import time

import psutil
from PIL import Image

# open and show image
im = Image.open('myImageFile.jpg')
im.show()

# display image for 10 seconds
time.sleep(10)

# hide image
for proc in psutil.process_iter():
    if proc.name() == "display":
        proc.kill()

原文由 Bengt 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题