1

で TKInter ウィンドウを閉じようとしていますself.win.destroy

bindイベントをボタンに ingすると、次のエラーがスローされます。

...
Can't invoke "bind" command: application has been destroyed
During handling the above exception, another exception occured:
...
Can't invoke "destroy" command: application has been destroyed

「ウィンドウを閉じる」コマンドをボタンにバインドするにはどうすればよいですか?

4

1 に答える 1

4

これを行う:

button['command'] = root_window.destroy # give it the function
# when the button is pressed the call () is done

こんなことしないで:

button.bind('<Button-1>', root_window.destroy()) # () makes the call

なぜなら

root_window.destroy()

button.bindが呼び出される前にウィンドウを破棄します。

これも間違っています: しかし、ルート ウィンドウを破壊しません:

button.bind('<Button-1>', root_window.destroy)

なぜなら

  • ボタンはキーボードでトリガーできません
  • root_window.destroy(event)が呼び出されますが、root.destroy()引数は 1 つしか取りません。

これも機能します:

button.bind('<Button-1>', lambda event: root_window.destroy())
于 2012-12-12T13:29:28.503 に答える