2016-10-07 7 views
0

コードが書かれていて、ファイルの一番上にGUIを閉じるExitオプションがあります。何らかの理由で「終了」をクリックすると、終了しません。私はこのコードを書くときに私が作った単純なエラーがあるかのように感じますが、それを見つけることはできません。もう一組の目がそうすることができたらいいなと思う。Tkinter GUIの終了に失敗しました

#Import tkinter to make gui 
from tkinter import * 
from tkinter import ttk 

#Makes the GUI the same way it was at the beginning of the program 

def login(*args): 
    try: 
     if (len(name.get())>=2) and (len(pw.get())>=2): 
      name_entry.delete(0, END) 
      pw_entry.delete(0, END) 
      valid.set("") 
     else: 
      valid.set("Invalid!") 
      pass 
    except TypeError: 
     valid.set("Invalid!") 
     pass 
    except ValueError: 
     valid.set("Invalid!") 
     pass 

#Sets title and creates gui  
root = Tk() 
root.title("Login") 

topMenu=Menu(root) 
root.config(menu=topMenu) 
#Creates menu and submenus 
subMenu=Menu(topMenu) 

#Gives menu options 
topMenu.add_cascade(label="File", menu=subMenu) 
subMenu.add_command(label="Exit", command=root.quit) 

#Configures column and row settings and sets padding 
mainframe = ttk.Frame(root, padding="3 3 12 12") 
mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
mainframe.columnconfigure(0, weight=1) 
mainframe.rowconfigure(0, weight=1) 

name=StringVar() 
pw=StringVar() 
valid=StringVar() 

#Widgets asking name and age 
name_entry = ttk.Entry(mainframe, width=15, textvariable=name) 
name_entry.grid(column=2, row=1, sticky=(W, E)) 

pw_entry = ttk.Entry(mainframe, width=15, textvariable=pw) 
pw_entry.grid(column=2, row=2, sticky=(W, E)) 

ttk.Label(mainframe, text="Username").grid(column=1, row=1, sticky=(N, W)) 
ttk.Label(mainframe, text="Password").grid(column=1, row=2, sticky=(N,W)) 
#ttk.Label(mainframe, text="      ").grid(column=3, row=3, sticky=(E)) 

#Makes a button that clears everything and returns it to start of program 
ttk.Button(mainframe, text="Login", width=30, command=login).grid(column=2, row=3, columnspan=2, sticky=(W, E)) 

ttk.Label(mainframe, textvariable=valid).grid(column=1, row=3, sticky=(E)) 

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5) 

name_entry.focus() 
root.bind('<Return>', login) 

root.mainloop() 
+0

「何らかの理由でそれをクリックしても終了しません」と言うと、メニューの「終了」項目を参照していますか? –

+0

はい、それは私が意味するものです。それが不明な場合は申し訳ありません。 – Unknownzdx

+1

再生できません。上記を実行する。 "File"をクリックし、 "Exit"を選択しました。アプリはきれいに終了しました。 Python 3.5 –

答えて

0

「root.quitをroot.destroyに変更してみてください」 (ブライアンオークリー)

これはそれを管理しています。私は理由を知らないがroot.quitはアイドル時にそれをしない。

関連する問題