在 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 的步骤:
- 在两个文件中,添加
from wx.lib.pubsub import pub
。
- 在
MA_view
模块中,使 Main.__init__
订阅一个主题,该主题将告诉 Main
实例取消隐藏自身,例如 pub.subscribe('unhide_ma', self.__unhide)
.
- 在
filter_view
文件中,从菜单栏处理程序发送一条消息,如 pub.sendMessage('unhide_ma')
。
- 在
Main.__unhide
中取消隐藏 window。
我尝试使用 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 的步骤:
- 在两个文件中,添加
from wx.lib.pubsub import pub
。 - 在
MA_view
模块中,使Main.__init__
订阅一个主题,该主题将告诉Main
实例取消隐藏自身,例如pub.subscribe('unhide_ma', self.__unhide)
. - 在
filter_view
文件中,从菜单栏处理程序发送一条消息,如pub.sendMessage('unhide_ma')
。 - 在
Main.__unhide
中取消隐藏 window。