112

Tkinter プログラムを終了するにはどうすればよいですか? このコードがあるとしましょう:

from Tkinter import *

def quit():
    # code to exit

root = Tk()
Button(root, text="Quit", command=quit).pack()
root.mainloop()

quitアプリケーションを終了する関数をどのように定義すればよいですか?

4

17 に答える 17

153

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
于 2013-03-22T18:39:54.357 に答える
44
def quit()
    root.quit()

また

def quit()
    root.destroy()
于 2008-09-21T12:44:01.880 に答える
17
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()
于 2008-11-16T18:36:55.683 に答える
5

Python プログラムを終了する通常の方法:

sys.exit()

(終了ステータスを渡すこともできます)または

raise SystemExit

Tkinter プログラムで正常に動作します。

于 2008-09-21T13:24:39.613 に答える
2

Escape ボタンをバインドして GUI 全体を閉じたい場合:

master = Tk()
master.title("Python")

def close(event):
    sys.exit()

master.bind('<Escape>',close)
master.mainloop()
于 2018-10-29T08:42:58.827 に答える
1

idlelib.PyShellモジュールで、型rootの変数Tkがグローバルになるように定義されています

関数の最後に、無限ループである関数をPyShell.main()呼び出しroot.mainloop()、関数によってループが中断されるまで実行されroot.quit()ます。したがって、root.quit()実行を中断するだけですmainloop

その idlelib ウィンドウに関連するすべてのウィジェットを破棄するには、関数root.destroy()の最後の行である を呼び出す必要がありidlelib.PyShell.main()ます。

于 2017-05-22T21:11:12.450 に答える