Я пытаюсь использовать mvc-модель в своей программе. Я использую pubsub для связи между моими файлами. Мне было интересно, есть ли другой способ общения вместо использования pubsub?python связь между различными классами и .py-файлами
Моя специфическая проблема: у меня есть 2 файла. В файле 1 у меня есть if-структура, где ему нужна информация из файла 2. Рамка A должна быть открыта, если определенная панель скрыта в кадре B, или кадр A не открывается, если панель видна во фрейме B.
Я могу отправить сообщение pubsub из файла 1 в файл 2, чтобы узнать, скрыта ли панель, а затем файл 2 может отправить сообщение с ответом. Но это самый эффективный способ?
Tx
EDIT: Я использую WxPython и я использую библиотеку PubSub, как описано здесь: https://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/
EDIT 2: Я 'решить' проблему с PubSub способом. Но я все еще думаю, что это лучший способ. Мой код:
файл 1: browser_menubar_view.py:
pub.subscribe(self.on_status_MA_panel, "RETURN_STATUS_MA_PANEL")
def on_open_microanalysis(self, event):
#check if MA panel view is hidden or not. If hidden, MA frame may open, if not, MA frame must be closed
#send message to choosepanel to see if ma_panel_view is hidden or not
pub.sendMessage("STATUS_MA_PANEL") #to choosePanel_view.py
if self.statusMAPanelShown == False:
pub.sendMessage("Unhide_MA_With_question") #to microanalyse_view
else:
wx.MessageBox('Microanalysis is already open in filterview.', 'Info', wx.OK | wx.ICON_INFORMATION)
файл 2: choosePanel_view.py
pub.subscribe(self.on_status_MA_panel, "STATUS_MA_PANEL")
def on_status_MA_panel(self,message):
if self.MApanel.IsShown() == True:
self.statusMAPanelShown = True
else:
self.statusMAPanelShown = False
pub.sendMessage("RETURN_STATUS_MA_PANEL",Container(data=self.statusMAPanelShown)) #to browser_MB_view
pubsub? Какую библиотеку/инструмент вы используете для этого? Панели? вы используете фреймворк/библиотеку gui? Я думаю, вам нужно больше тегов для вашего вопроса, чтобы люди могли лучше подумать. «Общение между файлами» звучит странно - чего вы пытаетесь достичь именно? – mguijarr
нет такой вещи, как «сообщение pubsub», что есть сообщение, которое публикуется нескольким подписчикам, в соответствии с описанным вами сценарием. Подписка на подписку - это не то, что вы хотите, то, что вы хотите, - это процесс intermessaging (или потоки в зависимости от на то, что вы подразумеваете под «Frame A» и «Frame B») – niceman
Я рассмотрю «потоки», чтобы узнать, эффективен ли он, чем pub.sendmessage(). ТХ. – VeVi