2015-04-16 7 views
2

Использование Enthought Canopy's TraitsUI, я использую TabularAdapters для отображения некоторых массивов, но они всегда создают равномерно распределенные ширины столбцов ... Я хотел бы сделать некоторые ширины меньшими, чем другие, но пока не нашел простого способа. У любого есть какие-то предложения?Ширина столбцов с TabularAdapters?

ответ

3

Один из способов управления шириной столбцов - переопределить метод get_width()TabularArrayAdapter. Например,

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() 

Скриншот:

screenshot

+0

Awesome! Спасибо за помощь. Это именно то, что я искал. – Steve76063