TabularAdapters的列宽? [英] Column widths with TabularAdapters?

查看:288
本文介绍了TabularAdapters的列宽?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过使用Canopy的TraitsUI,我正在使用TabularAdapters显示一些数组,但是它们总是产生均匀比例的列宽...我想使某些宽度小于其他宽度,但是还没有找到任何简单的方法...有人有什么建议吗?

Using Enthought Canopy's TraitsUI, I'm using TabularAdapters to display some Arrays, but they always produce evenly proportioned column widths...I'd like to make some widths smaller than others, but haven't found any simple way yet...Anyone have any suggestions?

推荐答案

控制列宽度的一种方法是覆盖TabularArrayAdapterget_width()方法.例如,

One way to control the widths of the columns is to override the get_width() method of the TabularArrayAdapter. For example,

import numpy as np
from traits.api import HasTraits, Array
from traitsui.api import View, Item, TabularEditor
from traitsui.tabular_adapter import TabularAdapter


test_dtype = np.dtype([('x', 'int'),
                       ('y', 'int'),
                       ('r', 'float')])


class TestArrayAdapter(TabularAdapter):

    columns = [(name, idx) for idx, name in enumerate(test_dtype.names)]

    even_bg_color = 0xF0F4FF

    def get_width(self, object, name, col):
        widths = {0: 50, 1: 50, 2: 150}
        return widths[col]


class Test(HasTraits):

    array1 = Array(dtype=test_dtype)

    view = \
        View(
            Item(name='array1', show_label=False,
                 editor=TabularEditor(adapter=TestArrayAdapter())),
            resizable=True,
        )


a1 = np.array([(10, 20, 1.5), (15, 31, 2.4), (14, 11, 1.9), (21, 13, 2.5)],
              dtype=test_dtype)
test = Test(array1=a1)
test.configure_traits()

屏幕截图:

这篇关于TabularAdapters的列宽?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆