当我在我的计算机上执行一些代码(macOS sera10.12.3)时,我无法在第二个窗口中使用dock中的“quit”或命令-Q来退出程序。我得到了这样的反馈
invalid command name "exit"
while executing
"exit"来自PyCharm。
我尝试在IDLE (Python3.6)和Terminal (Python2.7)中运行相同的脚本,它们都产生了相同的问题(尽管IDLE没有打印输出)。
无论我按了多少次command-Q,窗口仍然在那里,尽管我仍然可以使用窗口管理器退出窗口。有没有人能告诉我为什么会出这个问题?以下代码是可以重现该问题的最简单版本:
#!/usr/bin/env python
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
first = tk.Tk()
first_frame = tk.Frame(first, height=10, width=200)
first.wm_title("")
frame = tk.Frame(first)
tk.Button(frame, text="Next", command=lambda: first.destroy()).pack(side=tk.RIGHT)
tk.Button(frame,text="Quit",command=lambda: quit()).pack(side=tk.LEFT)
frame.pack(fill=tk.X)
first.protocol("WM_DELETE_WINDOW", lambda: quit())
first.mainloop()
root = tk.Tk()
root.attributes('-topmost', True)
root.title('')
test=tk.Label(root,text='test')
test.pack()
root.mainloop()发布于 2017-02-15 00:55:37
我相信Cmd-Q (即"Python“菜单)会被第一个主循环实例化。
我有下面的代码片段,它们会导致相同的行为:
def x_out():
if tkMessageBox.askokcancel("Quit", "Do you really wish to quit?"):
root.destroy()
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=x_out)如果我文件->退出,然后按Cmd-Q,我会得到与您相同的行为。如果我只是按Cmd-Q,没问题。似乎解决方案应该是确保最后关闭first.mainloop()。即在root.destroy()之后才调用first.destroy()
https://stackoverflow.com/questions/42183771
复制相似问题