我尝试使用MVC模型。我使用PubSub在不同文件之间进行通信。我使用wxpython来构建程序的GUI。
我在主文件2帧中打开
maview = MA_view.Main(None)
maview.Hide()
我隐藏了ma_view,因为我只需要打开它,以便我可以使用PubSub进行交流。现在,当用户想在filter_view中的menubar中打开ma_view时,我不想打开一个新的ma_view,我只想显示hived框架。
问题是filter_view的menubar也位于单独的文件中,所以当我键入
时maview.Show()
当然,它现在不是maview,因为在此文件中未定义。但是当我这样定义它时:
maview = MA_view.Main(None)
它只是打开一个新的框架。
我真的不喜欢与MVC合作(可能是因为我的编程技能还不够好),但是我正在与其他大学合作,所以我必须这样做。
TX提前
MVC非常重要,所以挂在那里,您不会后悔额外的学习曲线。这是使用wx.lib.pubsub支持您应用程序上的MVC的步骤:
- 在两个文件中,添加
from wx.lib.pubsub import pub
。 - 在
MA_view
模块中,使Main.__init__
订阅将告诉Main
实例的主题,例如pub.subscribe('unhide_ma', self.__unhide)
。
。 - 在
filter_view
文件中,从Menubar处理程序中发送一条消息,如pub.sendMessage('unhide_ma')
。 - 在
Main.__unhide
中,您将窗口放开。