首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【traits-traitsui-基础】-05-控件List-1

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:JetBrains PyCharm Community Edition 2016.3.2

  • 本系列介绍traitstraitsui的一些基础知识
  • 今天介绍常用控件,List/Float/Int

Part 1:示例

  1. 实现一个Excel表格的效果,今天只是实现展示效果
  2. 表格每一列设置数据格式,从动图上可以看出,如果输入不符合格式要求的单元格底色会变成红色,并且改动是无效的,有点数据库的感觉

界面效果

运行效果

Part 2:代码

代码语言:javascript
复制
from traits.api import HasTraits, Str, List, Int, Float
from traitsui.api import View, Item, Group, TableEditor
from traitsui.table_column import ObjectColumn


class ExcelValue(HasTraits):
    name = Str()
    gender = Str()
    age = Int()
    english_score = Float()
    math_score = Float()

    traits_view = View(
        'name', 'gender', 'gender', 'age', 'english_score', 'math_score',
        title='ScoreDisplay',
        width=0.18,
    )


table_editor = TableEditor(
    columns=[ObjectColumn(name='name', width=0.20),
             ObjectColumn(name='gender', width=0.20),
             ObjectColumn(name='age', width=0.20),
             ObjectColumn(name='english_score', width=0.20),
             ObjectColumn(name='math_score', width=0.20)],
    deletable=True,
    sort_model=True,
    auto_size=False,
    editable=True,
    orientation='vertical',
    show_toolbar=False,
    selection_mode="rows",
    selected="person_choose",
    row_factory=ExcelValue)


class Ui(HasTraits):
    excel = List(ExcelValue, editor=table_editor)
    selected_first_col = Str()

    g1 = Group([Item("excel", style="simple", width=700, show_label=False, emphasized=True),
                "_",
                Item("selected_first_col", style="simple", show_label=False)],
               show_border=True)

    view = View(g1, resizable=True, title="excel效果")


# 取值
student = [ExcelValue(name='张三', gender='男', age=18, english_score=81.5, math_score=95),
           ExcelValue(name='李四', gender='男', age=17, english_score=86, math_score=91.5)]

ui = Ui(excel=student)
ui.configure_traits()

代码截图

  1. 表格的每一行的各列是通过一个类ExcelValue来定义的
  2. 表格的一些特性是通过TableEditor来实现的,例如是否可以排序,是否可以编辑等
  3. age = Int(),规范了这一列只能输入整数
  4. math_score = Float(),规范了这一列只能输入浮点数
下一篇
举报
领券