我正在努力根据 mvc 优化我的设计,旨在简化 View 的 api,尽管 Iv 构建了复合小部件(具有自己的事件和/pubsub 消息),但它是非常嵌套的尝试简化事情。
例如,我有一个主要的顶级 gui 类 wxFrame,它有许多小部件,包括笔记本,笔记本包含许多选项卡,其中一些是包含复合小部件的笔记本。因此,要从 Controller 调用这些复合小部件之一的方法,我需要
self.gui.nb.sub_nb.composite_widget.method()
为了为 View 创建合适的抽象,我在 View 中创建了对这些小部件(其方法需要在 Controller 中调用)的引用,如下所示
self.composite_widget = self.nb.sub_nb.composite_widget()
因此,在 Controller 中,调用现在简化为
self.gui.composite_widget.method()
这是为 GUI 创建抽象层的可接受的方法吗?
最佳答案
这绝对是解决问题的一种方法。不过,我倾向于使用 pubsub 来以老式方式调用方法。有些人比 pubsub 更喜欢 pyDispatcher。使用多点方法调用的主要问题是,如果必须更改方法名称,则很难调试。
关于python - 访问嵌套小部件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3352521/