除了鼠标关闭之外,也可以通过进程来关闭。
使用psutil库,来检查进程process,可以在img.show()之前创建process的列表,show之后会新增一个process,如果知道新增的process的name直接:
for proc in psutil.process_iter(): # 遍历当前process
if proc.name() == "display": # 如果process的name是display
proc.kill() # 关闭该process
如果不知道process的name:
process_list = []
for proc in psutil.process_iter():
process_list.append(proc)
im.show()
for proc in psutil.process_iter():
if not proc in process_list:
proc.kill()
如果使用matplotlib库里的pyplot来显示PIL image(上面是使用系统默认的图片浏览器显示,这里是使用matplotlib调用的tk),可以使用plt.ion() 和 plt.pause(15)来避免使用plt.show():
import matplotlib.pyplot as plt
from PIL import Image
img = Image.open("filepath") # 打开图片,返回PIL image对象
plt.figure(figsize=(4, 4))
plt.ion() # 打开交互模式
plt.axis('off') # 不需要坐标轴
plt.imshow(img)
mngr = plt.get_current_fig_manager()
mngr.window.wm_geometry("+380+310") # 调整窗口在屏幕上弹出的位置
plt.pause(15) # 该句显示图片15秒
plt.ioff() # 显示完后一定要配合使用plt.ioff()关闭交互模式,否则可能出奇怪的问题
plt.clf() # 清空图片
plt.close() # 清空窗口
如果想让图片一直显示,而不是在15秒后消失,可以使用变量控制:
while pausing:
plt.pause(0.05)
即用pausing控制显示,如果不需要再显示,可以在函数外部将pausing改为False即可。