私のプログラムでmvc-modelを使用しようとしています。私は私のファイル間でpubsubを使って通信します。私はpubsubを使う代わりにコミュニケーションする別の方法があるのだろうかと思っていましたか?異なるクラスと.pyファイル間のpython通信
私の特定の問題:私は2つのファイルがあります。ファイル1では、ファイル2の情報が必要なif構造体があります。フレームBで特定のパネルが隠れている場合、またはフレームBでパネルが表示されている場合はフレームAを開くことはできません。
ファイル1からファイル2にpubsubメッセージを送信して、パネルが非表示になっているかどうかを尋ねることができました。その後、ファイル2は返信メッセージを返すことができます。しかし、これは最も効率的な方法ですか?
のTx
EDIT:https://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/
EDIT 2:私はのpubsub方法に問題を '解決' をここで説明したように、私はwxPythonのを使用して、私はの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:
1)の設計: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 message"というものはありません。publish-subscribeについて説明したシナリオがあなたの望むものではなく、複数のサブスクライバに公開されるメッセージは何ですか、プロセスのintermessaging(またはスレッドに依存します"Frame A"と "Frame B"の意味) – niceman
pub.sendmessage()よりも効率的かどうかを調べるために 'threads'を調べます。 tx。 – VeVi