2017-02-12 8 views
1

私のコンピュータ(MacOS Sierra、10.12.3、)でいくつかのコードを実行していた時、2番目のウィンドウで 'quit'ドックまたはコマンド-Qを使用します。私はこのフィードバックを受けました。PyCharmの"exit"を実行しているときに無効なコマンド名 "exit"

invalid command name "exit" 
    while executing 
"exit" 

IDLE(Python 3.6)とTerminal(Python 2.7)で同じスクリプトを実行しようとしましたが、IDLEからの印刷はありませんでしたが、同じ問題が発生しました。

何回でもcommand-Qを押しても、ウィンドウマネージャを使用してウィンドウを終了することはできますが、ウィンドウはまだそこにありました。誰かがなぜ問題だったか教えてもらえますか?私はCMD-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() 

答えて

0

:次のコードは、問題を再現できる最も簡単なバージョンです。

私は同じ同じ行動を誘発する次のコードスニペットを持っている:

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()を呼び出さないでください

関連する問題