在Python IDLE两个按键仍然不可关闭窗口
时间: 2024-03-03 07:49:14 浏览: 89
非常抱歉,我之前的回答有误。在Python IDLE中,`sys.exit()`不能正常退出程序,因为它会抛出一个`SystemExit`异常,而Python IDLE会捕获这个异常,并且不会让程序退出。因此,即使你将关闭窗口的事件绑定到`root.quit`函数上,程序也无法正常退出。
解决这个问题的方法是,将退出程序的逻辑放到一个单独的函数中,然后使用`os._exit()`函数来强制退出程序。`os._exit()`函数会直接终止程序的运行,不会抛出任何异常,因此可以保证程序能够正常退出。下面是修改后的代码:
```python
import os
from tkinter import *
root = Tk()
def quit_program():
os._exit(0)
Button(root, text='Exit', command=quit_program).pack()
Button(root, text='Quit', command=root.quit).pack()
root.protocol("WM_DELETE_WINDOW", root.quit)
root.mainloop()
```
这样,无论是点击按钮还是点击窗口右上角的关闭按钮,程序都可以正常退出了。
相关问题
在Python IDLE两个按钮不可关闭窗口
这可能是因为在Python IDLE中,当用户点击窗口右上角的关闭按钮时,会触发一个`WM_DELETE_WINDOW`事件,而这个事件默认会被忽略。如果你想要让这两个按钮可以关闭窗口,可以尝试在代码中添加如下代码:
```python
root.protocol("WM_DELETE_WINDOW", root.quit)
```
这行代码会将`WM_DELETE_WINDOW`事件绑定到`root.quit`函数,使得点击窗口右上角的关闭按钮时会执行`root.quit`函数,从而关闭GUI窗口。完整代码如下:
```python
import sys
from tkinter import *
root = Tk()
def quit_program():
sys.exit()
Button(root, text='Exit', command=quit_program).pack()
Button(root, text='Quit', command=root.quit).pack()
root.protocol("WM_DELETE_WINDOW", root.quit)
root.mainloop()
```
这样,无论是点击按钮还是点击窗口右上角的关闭按钮,都可以正常关闭GUI窗口了。
阅读全文