2017-12-22 7 views
0

私はListboxの中にtkinterにListboxを持っています。私たちはイメージを選択することができますが、すべてのイメージはモデル内の配列にありますが、ListboxがMVC "View"または "Controller"に対応するかどうかわかりません。コントローラの場合は、 MVCに従ってそれにインポートしたばかりです。これらのGUI要素はMVC用語でどのように表現されますか?

+0

それはあなたとどのような違いがありますか? – martineau

+0

@martineauビューの場合、コントロールの幅を更新するだけで、コントロールのように私はビューのように更新するはずはない、MVCを尊重したい –

+1

'tkinter'は' MVC'を使うとは思わない - そこにすべてを行うウィジェットだけです。 – furas

答えて

1

Listboxまたはtkinterの他のウィジェットは、ビュー(明らかに)であるという意味でビューの一部とコントローラの一部ですが、コードにコールバックを登録するときにコントローラとしても機能しますウィジェットは、関連するユーザーのやりとり(イベント)を捕捉し、登録されたコードに(tkinterイベントメインループの助けを借りて)それらを誘導します。

あなたが望むのであれば、あなたのビジネスコードを分離したモジュール(あなたのモデル)に入れて、tkinter登録されたコールバックがモデル内の関数を呼び出すようにすることができます。オブザーバーパターン(Pythonの例を参照)を使用して、ウィジェット(ビュー)を通知します。基本的にモデルのオブザーバーのリストを保持し、モデルが変更されたらupdate()またはnotify()というメソッドを呼び出します。

多くの場合、欠点ですが、モデルの変更が一部のウィジェットに影響を与えるたびにUIを自動的に更新する機能が必要になります。

私は単純なケース(いくつかのコントロールを使用するなど)には、それが良い理由がない限り、すべての作業を推奨していないことに注意してください。 MVCを使用したいと思っているのは、懸念を実際に分離するという欲望のようですが、最初にその努力を評価してください...

関連する問題