0

私はmvc-modelで作業しようとしています。私は、異なるファイル間で通信するためにpubsubを使用します。私はプログラムのGUIを構築するためにwxpythonを使用します。in wxpythonフレームの表示と非表示

私は私のメインのファイルに2つのフレームを開く

:filter_view(このファイルのメインクラス)とMA_view(私はこれをモジュールとしてインポートする):

maview = MA_view.Main(None) 
    maview.Hide() 

私はちょうどそれがする必要があるため、私は、MA_viewを隠します私は通信するためにpubsubを使用することができますオープン。さて、ユーザーがfilter_viewのメニューバーでMA_viewを開きたい場合、私は新しいMA_viewを開きたくありません。隠れフレームを表示したいだけです。

問題は、私は、このファイルで定義されていないので、それは今maviewしませんもちろんの

maview.Show() 

を入力するとfilter_viewのメニューバーがそう別のファイルにもあるということです。しかし、私が次のように定義すると:

maview = MA_view.Main(None) 

新しいフレームが開きます。

私は本当にmvcでの作業が嫌いです(おそらく私のプログラミングスキルが十分でないためかもしれませんが)私は他の同僚と一緒に作業しているので、この方法で作業しなければなりません。事前に

TX

答えて

1

MVCはあなたが余分な学習曲線を後悔しないように、そこにハングアップする、超重要です。ここでは、あなたのアプリにMVCをサポートするためにwx.lib.pubsubを使用手順は次のとおりです。両方のファイルで

  1. from wx.lib.pubsub import pubを追加します。
  2. MA_viewモジュールでは、pub.subscribe('unhide_ma', self.__unhide)のようにMainインスタンスに自身を再表示するように指示するトピックをサブスクライブするようにしてください(Main.__init__)。
  3. filter_viewファイルでは、pub.sendMessage('unhide_ma')のようなメニューバーハンドラからメッセージを送信します。
  4. Main.__unhideでは、ウィンドウの表示を解除します。
+0

peptalkのためのtx:私は実際に学習曲線を楽しんでいますが、時々それはsooooイライラしています; o)しかし、助けてくれて、それは動作します!私はとても幸せだ! – VeVi

+0

素晴らしい、幸運! – Schollii

関連する問題