Python+Tkinter浏览器控制:关闭Edge失败问题求助
解决Microsoft Edge浏览器关闭问题
问题核心原因
你的代码执行失败的关键是Microsoft Edge的正确进程名是msedge.exe,而非edge.exe或Microsoft Edge。直接用os.system执行taskkill时,若目标进程不存在会触发错误,进而导致程序崩溃。
无额外依赖的解决方案
使用Python内置的subprocess模块替代os.system,它能更安全地执行系统命令,即使进程不存在也不会让程序崩溃。同时指定正确的进程名并添加参数确保彻底关闭浏览器:
from tkinter import * import webbrowser import subprocess def scames(): webbrowser.open("https://www.met.police.uk/advice/advice-and-information/fa/fraud/personal-fraud/prevent-personal-fraud/") def anti(): webbrowser.open("https://www.avast.com/en-gb/free-antivirus-download#pc") def mail(): webbrowser.open("https://www.google.com/gmail/about/") def tabs(): # 关闭所有Edge进程及关联子进程,进程不存在时也不会触发程序崩溃 subprocess.run( ["taskkill", "/f", "/im", "msedge.exe", "/t"], capture_output=True, text=True ) root = Tk() root.title("WebBrowsers") mybutton = Button(root,text = "click me for free v-bucks!!", padx = 50, pady = 50, command = scames) mybutton.pack() mybutton2 = Button(root,text = "you have a virus clike here to remove it", padx = 50, pady = 50, command = anti) mybutton2.pack() mybutton3 = Button(root,text = "you have mail", padx = 50, pady = 50, command = mail) mybutton3.pack() mybutton4 = Button(root,text = "you have too many tabs", padx = 50, pady = 50, command = tabs) mybutton4.pack() root.mainloop()
关键改动说明
- 修正进程名:将错误的
edge.exe替换为Edge官方标准进程名msedge.exe。 - 改用
subprocess.run:替代os.system,通过capture_output=True捕获命令输出,避免错误信息干扰主程序,且默认不会因命令执行失败抛出异常,防止程序崩溃。 - 添加
/t参数:关闭Edge主进程的同时,一并关闭所有关联子进程(如各标签页对应的进程),确保彻底关闭浏览器。
内容的提问来源于stack exchange,提问作者OLIE
相关产品推荐
相关产品推荐

