首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行"exit“时命令名"exit”无效

执行"exit“时命令名"exit”无效
EN

Stack Overflow用户
提问于 2017-02-12 11:00:37
回答 1查看 1.5K关注 0票数 2

当我在我的计算机上执行一些代码(macOS sera10.12.3)时,我无法在第二个窗口中使用dock中的“quit”或命令-Q来退出程序。我得到了这样的反馈

代码语言:javascript
复制
invalid command name "exit"
    while executing
"exit"

来自PyCharm。

我尝试在IDLE (Python3.6)和Terminal (Python2.7)中运行相同的脚本,它们都产生了相同的问题(尽管IDLE没有打印输出)。

无论我按了多少次command-Q,窗口仍然在那里,尽管我仍然可以使用窗口管理器退出窗口。有没有人能告诉我为什么会出这个问题?以下代码是可以重现该问题的最简单版本:

代码语言:javascript
复制
#!/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()
EN

回答 1

Stack Overflow用户

发布于 2017-02-15 00:55:37

我相信Cmd-Q (即"Python“菜单)会被第一个主循环实例化。

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

代码语言:javascript
复制
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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42183771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档