私はtkinterを使用しますが、私の質問は多分一般的です。gui design question
私はGUIを設計しているのは初めてです。私のオブジェクトはそれぞれクラスとしてモデル化されています。私はGUIクラス階層を残りのクラス階層と結ぶ方法を理解していません。私はキャンバス上で動き回る円としてそれらを表示したい
# this is before I had any GUI in my code
class Creature:
def current_position() # returns real-time x, y coords
# ...
:
は例えば、私は生き物を持っています。動きの図形表現は、class Creature
にupdate_display
という方法で提供する必要があります。しかし、それはがGUIについての詳細を知っていなければならないことを意味します。さらにclass App(tkinter.Tk)
のredraw
メソッドを使用すると、update_display
メソッドを呼び出すために、すべての既存のCreature
インスタンスのリストを知る必要があります。それはあまりにも多くの依存関係です。
正しいアプローチは何ですか?
ありがとうございます。私はそれについてもっと読むために行く必要がある参照はありますか? (または、それはまるで簡単ですか?) – max
1つのアプローチでは、tkやその他のGUIフレームワークを使用しているかどうかを知る必要があります。そうでなければ、リファレンス?もう一つのアプローチでは、生き物の参照に基づいてそれらを描くことができるならば、GUIは生き物についてかなり多くを知る必要があります。もともと私が苦労していたものよりも優れていますが、GUIとモデルの依存関係を完全に取り除くわけではありません。それとも私は何かを誤解しましたか? – max
@max - あなたは正しいです。デカップリングの量は、投資したい時間の要素です。通常、モデルはビューに依存しません。しかし、そのビューは、それが動作しなければならないオブジェクトについて知る必要があります。ビューを作成して、すべての可能なモデルで機能させることはできません。ビューはあなたの生き物との疎結合を必要とします。たとえば、「get_position」や「get_name」などを呼び出すことができます。抽象化とは、単にtneyがどのように作成、格納されているかを知る必要がないということです。 –