tkinter プログラムの MVC 構造を作成しようとしています。
次のように、マウスクリックのイベントバインディングを持つビュークラスがあります
class View():
def __init__(self, root)
self.canvas = Canvas(root)
self.canvas.pack()
self.canvas.bind("<Button-1>", self.select)
def select(self):
# do some thing
別のクラス「コントローラー」があります
class Controller:
def __init__(self, root):
self.model = model.Model()
self.view = view.View(self.model)
#root.bind_class("Canvas", "<Button-1>", self.view.select)
イベント バインディングをビューからコントローラーに移動する必要があります。ビュー クラスで作成されたキャンバス ウィジェットをコントローラー クラスからバインドするにはどうすればよいですか?
を使用して Canvas ウィジェット全体をイベントにバインドすることにより、コントローラー クラスで一時的な解決策を考え出しましたroot.bind_class("Canvas", "<Button-1>", self.view.select)
。
現在、私の GUI にはキャンバス ウィジェットが 1 つしかなく、これは正常に機能します。ただし、後でキャンバスを追加すると、問題が発生する可能性があります。