在 wxpython 中显示和隐藏框架

in wxpython show and hide frames

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

我在主文件中打开了 2 个框架:filter_view(该文件的主要 class)和 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工作(可能是因为我的编程技术不够好)但是我和其他同事一起工作,所以我必须这样工作。

提前交易

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 中取消隐藏 window。