私は wxPython で GUI を構築しており、モデルから見えないようにすることで MVC に忠実であり続けようとしています。pubsub ライブラリを使用して、コントローラがサブスクライブするモデルからメッセージを送信し、必要に応じてビューを更新しています。
ただし、複雑な問題があります。私のモデルには同じオブジェクトのインスタンスのリストがあり、各オブジェクトは独自のヘルスとステータスのステータス更新メッセージを送信する必要があります。以下に示すように、各オブジェクトにはビュー内に独自のパネルがあります。
私のコントローラーにはオブジェクトのリストがあります:
kierkegaard = PhilosophersWithMetaData("Soren Kierkegaard", "thumbnails/kierkegaard.jpg", forks[0], forks[4])
lewis = PhilosophersWithMetaData("C.S. Lewis", "thumbnails/lewis.jpg", forks[1], forks[0])
dostoevsky = PhilosophersWithMetaData("Fyodor Dostoevsky", "thumbnails/dostoevsky.jpg", forks[2], forks[1])
descartes = PhilosophersWithMetaData("Rene Descartes", "thumbnails/descartes.jpg", forks[3], forks[2])
kant = PhilosophersWithMetaData("Immanuel Kant", "thumbnails/kant.jpg", forks[4], forks[3])
philosopher_list = [kierkegaard, lewis, dostoevsky, descartes, kant]
モデル内の各 Philosopher には次のものがあります。
def changeState(self, new_state):
self.state = new_state
pub.sendMessage("STATE_CHANGED", self.state)
私の質問は、正しいパネルを更新できるように、どのオブジェクトがメッセージを送信したかを知るにはどうすればよいですか? 更新をビューに渡すことができるように、参照するインデックスまたはオブジェクトが必要です。これを行う「MVC承認済み」の方法はありますか?