Tkinter プログラムを終了するにはどうすればよいですか? このコードがあるとしましょう:
from Tkinter import *
def quit():
# code to exit
root = Tk()
Button(root, text="Quit", command=quit).pack()
root.mainloop()
quitアプリケーションを終了する関数をどのように定義すればよいですか?
destroy()tkinterウィンドウを閉じるために使用する必要があります。
from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.destroy).pack()
root.mainloop()
説明:
root.quit()
上記の行はバイパスするだけです。root.mainloop()つまり、コマンドが実行されたroot.mainloop()場合でもバックグラウンドで実行されます。quit()
root.destroy()
destroy()コマンドが消える間、root.mainloop()すなわちroot.mainloop()停止します。
したがって、プログラムを終了したいだけなので、をroot.destroy()停止するので使用する必要がありmainloop()ます。
ただし、無限ループを実行したいが、Tkウィンドウを破棄せず、root.mainloop()行の後にコードを実行したい場合は、を使用する必要がありますroot.quit()。元:
from Tkinter import *
def quit():
global root
root.quit()
root = Tk()
while True:
Button(root, text="Quit", command=quit).pack()
root.mainloop()
#do something
def quit()
root.quit()
また
def quit()
root.destroy()
import tkinter as tk
def quit(root):
root.destroy()
root = tk.Tk()
tk.Button(root, text="Quit", command=lambda root=root:quit(root)).pack()
root.mainloop()
Python プログラムを終了する通常の方法:
sys.exit()
(終了ステータスを渡すこともできます)または
raise SystemExit
Tkinter プログラムで正常に動作します。
Escape ボタンをバインドして GUI 全体を閉じたい場合:
master = Tk()
master.title("Python")
def close(event):
sys.exit()
master.bind('<Escape>',close)
master.mainloop()
idlelib.PyShellモジュールで、型rootの変数Tkがグローバルになるように定義されています
関数の最後に、無限ループである関数をPyShell.main()呼び出しroot.mainloop()、関数によってループが中断されるまで実行されroot.quit()ます。したがって、root.quit()実行を中断するだけですmainloop
その idlelib ウィンドウに関連するすべてのウィジェットを破棄するには、関数root.destroy()の最後の行である を呼び出す必要がありidlelib.PyShell.main()ます。