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()
ます。