Я создаю графический интерфейс с помощью wxPython и пытаюсь оставаться верным 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]
И каждый Философ в модели имеет:
def changeState(self, new_state):
self.state = new_state
pub.sendMessage("STATE_CHANGED", self.state)
Мой вопрос: как мне узнать, какой объект отправил сообщение, чтобы я мог обновить правильную панель? Мне понадобится индекс или объект для ссылки, чтобы я мог передать обновление в представление. Есть ли «одобренный MVC» способ сделать это?