Python 无效的命令名";退出“;执行时;退出“;

Python 无效的命令名";退出“;执行时;退出“;,python,python-2.7,python-3.x,tkinter,pycharm,Python,Python 2.7,Python 3.x,Tkinter,Pycharm,当我在我的计算机上执行一些代码(macOS Sierra,10.12.3,)时,我无法在第二个窗口中使用dock中的“quit”或command-Q退出程序。我得到了这个反馈 invalid command name "exit" while executing "exit" 来自PyCharm 我尝试在IDLE(python3.6)和Terminal(python2.7)中运行相同的脚本,它们都产生了相同的问题(尽管IDLE没有打印输出) 无论我按多少次command-Q,窗口仍然存

当我在我的计算机上执行一些代码(macOS Sierra,10.12.3,)时,我无法在第二个窗口中使用dock中的“quit”或command-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()
我相信Cmd-Q(即“Python”菜单)是由第一个mainloop实例化的

我有以下代码段,它会导致相同的行为:

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)
如果我选择File->Exit然后选择Cmd-Q,我会得到与您相同的行为。如果我只是Cmd-Q,没问题。解决方案似乎是确保第一个.mainloop()最后关闭。i、 e.在root.destroy()之后才调用first.destroy()

我相信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)

如果我选择File->Exit然后选择Cmd-Q,我会得到与您相同的行为。如果我只是Cmd-Q,没问题。解决方案似乎是确保第一个.mainloop()最后关闭。i、 e.在root.destroy()之前不要先调用.destroy()

确保在您回答问题时,它应该回答问题,而不是告诉其他人您有相同的问题,或者只告诉问题的原因。确保在您回答问题时,它应该回答问题,不要告诉别人你有同样的问题,或者只告诉是什么导致了问题。