【问题标题】:Accessing methods of nested widgets嵌套小部件的访问方法
【发布时间】:2010-07-28 11:51:40
【问题描述】:

我正在根据 mvc 优化我的设计,旨在简化非常嵌套的视图 api,即使 Iv 在试图简化事情。

例如,我有一个主要的顶级 gui 类 wxFrame,它有许多小部件,包括笔记本,笔记本包含许多选项卡,其中一些是包含复合小部件的笔记本。因此,要从控制器调用这些复合小部件之一的方法,我将拥有

 self.gui.nb.sub_nb.composite_widget.method()

为了为视图创建合适的抽象,我在视图中创建了对这些小部件(其方法需要在控制器中调用)的引用,如下所示

 self.composite_widget = self.nb.sub_nb.composite_widget()

因此在控制器中调用现在被简化为

 self.gui.composite_widget.method()

这是为 gui 创建抽象层的可接受方式吗?

【问题讨论】:

    标签: python model-view-controller user-interface design-patterns oop


    【解决方案1】:

    这绝对是解决问题的一种方法。不过,我倾向于使用 pubsub 以老式方式调用方法。有些人比 pubsub 更喜欢 pyDispatcher。使用多点方法调用的主要问题是,如果必须更改方法名称,则很难调试。

    【讨论】:

    • 使用“pubsub 以老式方式调用方法”是什么意思,您的意思是,一旦您的控制器或从...收到消息的东西,您就在您的 gui 中调用一个方法?大多数时候我必须调用的方法是设置器,用于根据配置设置小部件的初始值。如果用户更改了小部件的值,那么我主要使用 pubsub 来广播该值,所以我通常不必调用吸气剂。虽然有时我会这样做。
    • 是的,我就是这个意思。我有一个程序每隔几分钟检查一次邮箱中的更新。要更新我的程序,我可以直接调用方法,也可以偷懒使用pubsub。在这种情况下,我几乎总是使用 pubsub 来广播我收到了一封电子邮件。我的主程序中的接收者看到消息并通过更新我的 UI 并弹出一个消息框让我知道来处理它。我很抱歉没有更清楚。
    • 感谢您的澄清,但无需道歉。有很多方法可以实现,所以我只是想确保我理解......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多