在wxpython中显示和隐藏帧

时间:2016-12-28 16:17:34

标签: model-view-controller wxpython show-hide publish-subscribe

我尝试使用mvc-model。我使用pubsub在不同的文件之间进行通信。我使用wxpython来构建我的程序的gui。

我在主文件中打开2帧:filter_view(此文件的主类)和MA_view(我将其作为模块导入):

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

我隐藏了MA_view,因为我只是需要它才能打开,所以我可以使用pubsub进行通信。现在,当用户想要在filter_view中的菜单栏中打开MA_view时,我不想打开新的MA_view,我只想显示隐藏的框架。

问题是filter_view的菜单栏也在一个单独的文件中,所以当我输入

maview.Show()

当然它现在没有maview,因为在这个文件中没有定义。但是当我这样定义时:

maview = MA_view.Main(None) 

它只是打开一个新框架。

我真的不喜欢和mvc一起工作(可能是因为我的编程技巧不够好)但是我和其他同事一起工作,所以我必须这样做。

提前

1 个答案:

答案 0 :(得分:1)

MVC非常重要,所以在那里,你不会后悔额外的学习曲线。以下是使用wx.lib.pubsub在您的应用上支持MVC的步骤:

  1. 在这两个文件中,添加from wx.lib.pubsub import pub
  2. MA_view模块中,让Main.__init__订阅一个主题,告诉Main实例取消隐藏,例如pub.subscribe('unhide_ma', self.__unhide)
  3. filter_view文件中,从pub.sendMessage('unhide_ma')等菜单栏处理程序发送消息。
  4. Main.__unhide中,您取消隐藏窗口。