如何在Python中关闭已打开的图片?

0 投票
2 回答
525 浏览
提问于 2025-04-18 14:34

我用这个python 函数通过一个python脚本打开了一张图片:

import os
class ReadPicture:
    def readPicture(self):
        os.startfile('picture.jpg')
if __name__=='__main__':
    RP.ReadPicture()
    RP.readPicture()

这张图片是在Windows上用默认的应用程序打开的。你能告诉我怎么关闭已经打开的图片吗?谢谢你的建议。

我为什么不使用PIL呢?因为它不能满足我的需求:

当操作没有指定或是'open'时,它的效果就像在Windows资源管理器中双击文件一样

没错,我就是想像双击一样打开这张图片。

2 个回答

0

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这个时候,大家通常会去一个叫做StackOverflow的网站上寻求帮助。

在这个网站上,用户可以提问,也可以回答别人的问题。提问的时候,最好把问题描述得清楚明了,提供一些代码示例,这样别人才能更好地理解你的问题并给出帮助。

有些人可能会遇到错误信息,这些信息通常会告诉你哪里出了问题。理解这些错误信息是解决问题的关键。很多时候,错误信息会指向代码的某一行,说明那里可能有问题。

总之,遇到问题时,不要着急,可以先查找一下相关资料,或者在StackOverflow上发问,记得把问题描述清楚,提供必要的代码,这样更容易得到帮助。

#008_py_process_kill_proc_cmdline_dispaly
import os
pidl=[pid for pid in os.listdir('/proc') if pid.isdigit()]
print(pidl[-10:]) # pid_list recent 10 process from/proc directory
cnt=0
for pid in pidl:
    path_and_file_=os.path.join('/proc/', pid, 'cmdline')
    print(path_and_file)
    cmdf=open(path_and_file)
    cmdl=cmdf.readline() #read first one line in cmdline-file
    print('pid=',pid, 'cmdline=', cmdl)
    if(len(cmdl)>=6):
        if(cmdl[0]=='d' and cmdl[1]=='i'): # 'disply' image show() name
            os.system('kill -9 '+ pid)
            cnt +=1
print('killed total= %d'%cnt)
1

我觉得这不太可能。os.startfile() 这个函数不会返回任何东西,所以你无法知道启动了哪个进程(有时候,Windows 可能会重用一个已经存在的进程,这样强行关闭它可能会导致丢失工作)。

如果你想能够关闭显示图片的窗口,你需要用像 PIL 这样的框架来加载图片,然后自己写一个用户界面,用 TkinterPyQt 来显示。

另一个选择是看看 pywin32,它可以让你访问 Windows 的 API。通过这个,你可以在 Python 中重新实现 os.startfile()。这样,你可能能更好地控制子进程。

相关内容:

撰写回答