1

Python でトップレベルの Tk ウィンドウを自動的に閉じるコードを書こうとしていました。

最終的には動作するようになりましたが、途中で小さな問題が発生し、理解できませんでした。

2 番目の 2 つのボタンは機能しますが、最初の 2 つのボタンは機能せず、その理由がわかりません...

何か案は?

from Tkinter import *

root = Tk()
def doDestroy ():
    TL.destroy()

TL = Toplevel()
TL.b = Button (TL, text="lambda destroy", command=lambda: TL.destroy)
TL.b.pack()

TL.b2 = Button (TL, text="callback destroy", command=doDestroy)
TL.b2.pack()

de = lambda: TL.destroy()
TL.b3 = Button (TL, text="lambda that works", command=de)
TL.b3.pack()
root.mainloop()
4

1 に答える 1

8

結果ではなく関数を返すためです。

あなたは置くべきです:

command=TL.destroy

またはラムダを使用した場合:

command=lambda: TL.destroy()
于 2008-12-09T04:59:40.207 に答える