:
def close_window(root):
root.destroy()
def close_window():
window.destroy()
に、それが動作するはずです。
説明:close_window
のバージョンが単一の引数、つまりroot
を期待するように定義されて
。その後、あなたのバージョンclose_window
への呼び出しはその引数を持つ必要があります。そうしないと、Pythonはという実行時エラーを返します。
Button
を作成したときに、クリックしたときにclose_window
を実行するようにボタンに指示しました。ただし、ボタンのウィジェットのソースコードのようなものです:私のコードの状態として
# class constructor
def __init__(self, some_args, command, more_args):
#...
self.command = command
#...
# this method is called when the user clicks the button
def clicked(self):
#...
self.command() # Button calls your function with no arguments.
#...
、Button
クラスは、引数なしで、あなたの関数を呼び出します。しかし、あなたの関数は引数を期待しています。したがって、あなたはエラーが発生しました。関数呼び出しは、Buttonクラスの内部で実行されるように、我々は、その引数を取るのであれば、我々はと残されている:
def close_window():
root.destroy()
root
に値が割り当てられることはありませんので、どちらかの、しかし、権利はないこと。x
をまだ定義していない場合は、print(x)
と入力してください。
はあなたのコードを見てみると、私はあなたがwindow
にdestroy
を呼び出すしたい考え出したので、私はwindow
へroot
を変更しました。
Hey Matt。明確な質問と、きれいで簡単なコード例をお寄せいただきありがとうございます。また、あなたのコードが "動作していない"ときに、将来的にトレースバック(クラッシュ)を含めることを確認できますか?それはまた、人々がコードのどの部分が壊れているかをほぼ即座に把握するのに役立ちます。明らかにこの場合、コードサンプルは非常に小さく、識別が容易ですが、将来的には困難な状況で回答を得るのに役立つかもしれません。 – jdi
問題がすぐに見えない人は、エラーが 'TypeError:close_window()に1つの必須の位置引数 'root'がありません。これは、コールバック 'close_window'に引数が渡されなかったことを意味します。これは' command = '関数のためのものではありません。バインドされたイベントコールバックは引数(イベントオブジェクト)を取得します。 –