问题标签 [traitsui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
73 浏览

python - 相机构造函数中的关键字参数

伙计们,我最近写了一些关于 TraitUi 的代码,其中一个例子让我很困惑。

这是整个示例:

我的问题是关于最后一堂课,叫做 MainWindow。它定义了一个变量Camera:

上面的代码真的让我很困惑。有没有人可以帮助我解决这个问题?我不太熟悉 Python 中的面向对象编程,也不太熟悉 Python 中的魔术方法。您能否向我解释一下这个声明有什么作用?因为有两个变量叫做显示,所以我迷路了。

0 投票
2 回答
79 浏览

enthought - save_file() 没有给出“已经存在”消息框

我正在尝试使用 traitsui.file_dialog 中的 save_file(),但遇到了问题……真正奇怪的是,如果我在 Visual Studio 中运行我的代码(使用 PTVS),它工作得很好!

这是我看到的问题......当我使用 save_file() 创建的对话框来选择一个已经存在的文件时,我在 Canopy 编辑器的 iPython 窗口中收到 NotImplemented 错误,我认为这表明我没有在我的代码中有一个 FileExistsHandler(我仍处于学习 Python/Canopy/Traits 的早期阶段,所以我可能在这里湿透了 :))。我也从未收到“文件已存在”弹出窗口。

但是,当我使用 PTVS 从 Visual Studio 中运行相同的代码时,我确实会看到“文件已存在”弹出窗口,其中包含接受或取消的选项。

为什么 PTVS 版本可以工作,以及(更重要的是)我怎样才能让我的 Canopy 编辑器版本工作???

感谢任何人都可以提供的任何帮助:)

史蒂夫

0 投票
1 回答
233 浏览

enthought - 向组中的项目添加/更改“文本”

我正在使用 Enthought 的 TraitsUI 设计一个 UI,但我不知道如何完成我想要的...

这就是我想要的:我在视图中有 Items() 我想显示为英制或 SI 单位。我可以根据 SI/English 按钮更改“编辑”框中的值,但我不知道如何更改标签的文本。例如,如果我有一个项目“长度,英尺 [3.28]”并将其转换为 SI,我希望它显示“长度,米 [1.00]”。我可以处理 3.28->1.00 转换,但不知道如何将“ft”更改为“m”。

有什么建议么?

我尝试过的一件事是定义一个包含单位名称的字符串(如“m”或“ft”)......然后,在项目中,我将标签设置为:

label = '顶部,'+lengthUnits

这在第一次构建视图时工作正常,但是当我更改单位控件时它不会更新标签。是否有某种方法可以强制视图使用所有新值进行更新?

这是一个小 py 程序,它显示了我正在尝试做的事情(请随意批评我的风格:))。我还将尝试添加一些图像来显示发生了什么:

显示我的问题的屏幕截图

0 投票
0 回答
207 浏览

python - Enthought Traits:组和范围项目选择栏的选项卡式列表未显示

Enthought Traits 专家帮助我,这是我第一次使用,我的应用程序很复杂。

背景:我正在尝试创建一个界面,让我的主 SelectionWindow 加载一些单独的数据图。每个数据图表都单独显示,用户可以使用可拖动的选择栏(如 demo.py 上的 Range 示例)来选择每个图表上的数据点,彼此独立。

1) SelectionWindow 将 SelectionFrame 对象构造成一个列表,每个对象都根据传入的数据创建其 Range 特征。我希望这些在另一个选项卡中的每个 SelectionFrame 都被标记。SelectionFrame 具有 Range 特征,供用户选择一些数据和分组的名称字段(现在,稍后我想要该组中的图表)。

2) 然后它从这个 SelectionFrames-->Group 对象列表中创建一个 Group,这样我就可以合并用户在选项卡框架中所做的所有选择。

3)然后为整个SelectionWindow生成一个视图并渲染它。

问题:

1) 我无法让 SelectionFrames-->Group 被标记。我只是得到一个范围选择器的垂直列表,它本身是标签的,但只有其中一个。

2) 我的 Range 特征没有呈现。我只是得到一个带有对象名称和内存位置的文本字段。*会发布图片,但这是我的第一个问题

这是代码,我已经剥离了数据加载的东西,因为我知道这是可行的,但组和东西的结构是这里的主要关注点:

3)如果有人有任何关于放置一个对滑块有反应的图表的提示,那就太棒了。我应该使用 matplotlib 还是 Chaco?我希望有一条垂直线与选择器所在的点对齐。

谢谢你,如果它有效,我会放一张成品的图片,因为它可能非常独特。

0 投票
3 回答
843 浏览

python - 在 Traits 中将默认文件目录添加到 FileDialog

我在 TraitsUI 中使用 FileDialog 类,效果很好,除了我的生活,我无法弄清楚如何传递默认目录以供对话使用。

理想情况下,对话框将在本地文件系统中的某个点打开,而不是树的顶部......

非常感谢新手的任何见解或方向。

基本代码非常通用/标准如下。

0 投票
1 回答
328 浏览

python - 嵌套 HasTraits 对象,如何正确初始化

我正在尝试创建一个 HasTraits 对象,其中包含另一个 HasTraits 对象的其他几个不同实例。但是,当我在主对象中初始化许多 HasTraits 对象时,我似乎总是遇到问题。

我在下面制作了一个产生错误的简单示例。有人可以解释最好的方法吗?-我不知道什么时候应该使用 traits.Instance(traits.Int) 或仅使用 traits.Int -如何在构造函数中为特征传递初始值?每当我这样做时,我都会收到诸如“type int required but found type traits.Int”之类的错误

谢谢你的帮助

0 投票
1 回答
687 浏览

python - 我可以强制我的启用容器从 traitsui 处理程序中重绘吗?

我使用 atraitsui.api.Handler来捕获和处理 a 的事件traitsui.api.View,该视图包括一个按钮,其行为是从包含多个绘图的容器中删除一个绘图。当使用remove按钮、pop()调用方法并删除绘图时,将访问容器的组件列表。但是,视图不会重绘,因此该图似乎保留在原处。通过拖动角调整窗口大小将强制重绘,确认pop()

问题是:如何以编程方式强制重绘?

在我看来,这样做的正确位置是在处理程序的setattr方法中,就在pop()情节之后。

0 投票
1 回答
326 浏览

python - 取决于操作系统的 TraitsUI 错误视图

我在 Python 中使用 TraitsUI 来创建应用程序,并注意到 UI 在 Mac 10.8 上消失了,在 Ubuntu 10.04 上看起来很棒,并且在 Ubuntu-Mate 14.04 之间(即小的视图差异)

这是Mac图像

这是 Ubuntu 伴侣图像

这是在计算机上使用最新版本的 traits=4.5.0 和 traitsui=4.4.0。任何想法,如果不是为什么会发生这种情况,那么问题可能存在于特征/特征的哪个包或组件中?

谢谢。

PS第一个屏幕截图中没有丢失情节,我只是删除了它,所以这不是错误的一部分。

0 投票
1 回答
128 浏览

editor - 表格适配器编辑器问题

我在 TraitsUI 包中遇到了 TabularAdapter 的问题...

我一直在尝试自己解决这个问题太久了,所以我想在这里向专家寻求一些友好的建议:)

我将添加一段我的程序来说明我的问题,我希望有人可以查看它并说“啊哈!......这是你的问题”(我的手指交叉)。

基本上,我可以使用 TabularAdapter 将表格编辑器生成到 dtypes 数组中,它工作得很好,除了:

1) 每当我更改元素的数量(标识为“骨折数:”)时,数组都会调整大小,但在我单击其中一个元素之前,表格不会反映更改。我想要发生的是,在我释放骨折数滑块后,行数(骨折数)会发生变化。这是可行的吗?

2)我遇到的第二个问题是,如果数组在 .configure_traits() 显示之前被调整大小(当 Number_of_fractures 被修改时由通知程序),我可以缩小数组的大小,但我不能增加它超过新尺寸。

2b)我以为我找到了一种方法让表编辑器显示完整数组,即使它增加了代码中的 5 个集合(就在调用 .trait_configure() 之前),但我被愚弄了:( 我尝试添加另一个Group() 在 vertical_fracture_group 前面,所以表格不是第一个显示的东西。这更接近地模拟了我的整个程序。当我这样做时,我被锁定在新的较小大小的数组中,我不能再将其大小增加到最大 15。我正在修改代码以反映此问题。

这是我的示例代码:

在下面我与 Chris 的讨论中,他提出了一些迄今为止对我没有用的建议:(以下是我的“当前”版本的测试代码,以便 Chris(或其他任何希望加入的人)可以查看我是否我犯了一些明显的错误。

0 投票
2 回答
128 浏览

python - 检查 TreeView 的特征堆栈?

我们正在尝试评估这个想法的可行性:

我们在建模程序中有一个非常深的 HasTraits 对象堆栈。例如,如果我们对两种材料进行建模,我们可以通过以下方式访问这些材料的各种属性:

我们已将此代码用于模拟,其中我们仅增加特征的值。例如,我们可以运行一个模拟,其中一种材料的 index_of_refraction 在 10 次迭代中从 1.3 变化到 1.6。它实际上工作得很好。

问题在于为模拟选择所需的特征。用户不会知道所有这些特征变量名称,因此我们想呈现程序整个特征结构的层次结构/树视图。对于上述两个特征,它可能看起来像:

ETC...

我知道 traitsui 支持 TreeEditor,但是有没有像这样基于检查 HasTraits 堆栈构建 TreeEditor 的示例?从对象中获取特征堆栈的最直接方法是什么?本质上,这个想法可行还是我应该回到绘图板上?

谢谢