首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TraitsUI -连接视图

TraitsUI -连接视图
EN

Stack Overflow用户
提问于 2016-02-14 16:08:46
回答 1查看 153关注 0票数 1

阅读有关使用TraitsUI应用MVC模式的文档,我阅读了示例demo.py。现在,我想知道如何管理多个"MVC“。我想写一些"includeallMVCs.py“,并且有这样的东西:

代码语言:javascript
复制
import MyViewController1, MyViewController2, MyViewController2

class IncludeallMVCs(HasTraits):
    view = Include(MyViewController1, MyViewController2, MyViewController3)

其中MyViewController、MyViewController、MyViewController是类似于MVC_demo示例的类。

因此,我们的想法是将不同的视图与它们的控制器分开,然后将它们“连接”到一个“泛型”视图中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 00:16:18

搜索我找到的示例:使用实例的动态表单,然后修改它以分离一个AdultHandler。在本例中,我使用了由AdultHandler控制的工资变量。

档案:adult.py

代码语言:javascript
复制
from traitsui.api import Handler
class AdultHandler(Handler):
    def object_salary_changed (self, info):
        if (info.object.salary >= 20000):
            print "Good Salary!"

        else:
            print "Bad Salary"

文件:adult_model.py

代码语言:javascript
复制
from adult import AdultHandler

class AdultSpec ( HasTraits ):
    """ Trait list for adults (assigned to 'misc' for a Person when age >= 18).
    """

    marital_status   = Enum( 'single', 'married', 'divorced', 'widowed' )
    registered_voter = Bool
    military_service = Bool
    salary = Int

    traits_view = View(
        'marital_status',
        'registered_voter',
        'military_service',
        'salary',
        handler = AdultHandler()
    )

if __name__ == '__main__':
    a = AdultSpec()
    a.configure_traits()

档案:main.py

代码语言:javascript
复制
from adult_model import AdultSpec

class Person ( HasTraits ):
    """ Demo class for demonstrating dynamic interface restructuring.
    """
    datainput       = Instance( AdultSpec )

    # Interface for attributes that depend on the value of 'age':
    spec_group = Group(
        Group(
            Item( name = 'datainput', style = 'custom' ),
            show_labels = False
        ),
        label       = 'Additional Info',
        show_border = True
    )

    # A simple View is enough as long as the right handler is specified:
    view = View(
        Group(
            spec_group
            ),
        title     = 'Using MVC',
        buttons   = [ 'OK' ],
        resizable = True,
        width = 300
    )

# Create the demo:
demo = Person( datainput = AdultSpec() )

# Run the demo (if invoked from the command line):
if __name__ == '__main__':
    demo.configure_traits()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35393904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档