问题标签 [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.
python - TraitsUI CheckListEditor with default selections?
I'm using a CheckListEditor (source, docs) to present a list of options to users for configuring a simulation. By using the custom
View options, it displays these selections as checkboxes. What I can't figure out is how to set some pre-selected or pre-checked boxes? IE the default settings for the simulation.
Below is a SS of the output. How would I initialize this with say a
and b
checked?
Thanks.
python - 冻结(.exe)一个traitsUI程序,现实可行吗?
我正在尝试使用 cx_freeze 或 pyInstaller 冻结 TraitsUI 程序,该程序利用 Chaco、Traits、TraitsUI 以及在较小程度上使用 mayavi(实际上可以取出)。我需要它在 mac、linux、ubuntu 上运行,所以我避免使用 py2exe。 我故意卸载了 pyqt 和 pyside,以便只有 wx 后端可用。
使用 cx_freeze,我遇到并报告了一个错误,所以 pyInstaller 似乎让我走得最远。它生成了一个 .exe 文件,但是当我运行该文件时,我收到警告和错误。要生成 .exe 文件,我做了:
运行时,警告是:
此外,我收到以下错误:
pyface可能有很多动态导入,所以这一定是任何试图冻结ETS的人都会遇到的问题。是否有一个单一的修复程序可以让这个工作?
考虑到网上流传的关于冻结 ETS 计划的成功率的旧资料,是否值得进一步投资?对我们来说,让人们避免为这个应用程序配置 python 将是一个巨大的优势。
谢谢。
enthought - 在基于 traitsui 的 GUI 中持续按下按钮
我正在为具有 Traits 和 TraitsUI 的机器构建 GUI。只要按下 GUI 上的按钮,我希望机器执行一个动作,当然 GUI 不会冻结并显示这个连续动作的结果,即在单独的线程中。
我可以在继承HasTraits
一个按钮的类和一个在按下按钮时执行操作的函数(def _button_fired:
)中定义,但在我看来,_button_fired
定义的方式,GUI实际上等待按钮按下结束之前执行“动作”。如上所述,我希望它在我按下按钮的第二次执行一个功能,并在我释放按钮时停止该功能执行(或执行不同的功能)。
您可以将代码片段号作为示例。7来自 Gael 的教程,想象一下按下按钮时,计数器应该增加。
对你的帮助表示感谢。
赫尔伯恩
python - 将 Traits.HasTraits 类视为嵌套字典?
想象一下,我有以下 Traits 对象:
Bar
a
将让我通过以下方式访问属性Foo
:
是否有一种标准方法可以bar
作为嵌套字典返回:
我本质上是在尝试提取特定类型对象的所有子特征。我们的用例是我们有深度嵌套的具有绘图特征的 HasTrait 对象,并且我们正在尝试动态查找特定对象上的所有绘图。我们有一个函数可以从嵌套字典中返回绘图,但我们需要传入 HasTrait 对象,因此将它们格式化为嵌套字典会很棒。如果有另一种方法可以动态检查 HasTraits 对象的堆栈并返回某种类型的所有特征,那也可以。
这是 HasTraits API 的链接......无法直接从中弄清楚。
解决方案尝试
我试过使用该.traits()
方法,但它返回这些CTrait
对象。
没有像我预期的那样评估:
但在彼得的建议之后,这行得通:
现在的问题是如何递归地做到这一点。
python - 检查同步特征:Traits/TraitsUI
我在一个大型程序中扫描了所有的 Traits,我们的许多 Traits 是同步的。例如,考虑结构的 HasTrait 对象:
在我们的应用程序中,事实证明 a 和 c 是同步特征。换句话说,Material3.MaterialX
与 相同Material1.ShellMaterial
,并且它们已使用sync_trait()
(HasTraits API)进行设置。
是否可以检查 a、b、c 并动态确定 a 和 c 是否同步?
目标是绘制所有这些,但对用户隐藏多余的图。尽管这些对象代表相同的数据,但它们之间的典型比较类似于a==c
return 。False
python - Enthought TraitsUI ValueEditor - 自定义树视图中显示的值/对象
我正在尝试使用 traitsui.api.ValueEditor 为字典创建树视图:
输出如下:
我想隐藏以下划线字符_开头的项目'_listener_traits'、'_sync_trait_'和'_traits_listener_' 。这样,树查看器将只显示d、designator、mat_name、material、modeltree和name。
查找ValueEditor的源代码后,我想编辑 TreeEditor、RootNode 或 value_tree_nodes 可能会自定义要查看的特征?这是正确的方法吗?我应该专门编辑哪个来自定义 ValueEditor?
python - Dynamic initialization of Traits Range object
I'm having trouble trying to dynamically initialize a Traits Range object.
The following code is a very simple example of what I'm trying to do, but sadly fails with the following type error:
TypeError: unsupported operand type(s) for -: 'int' and 'code'
The code works if I replace the definition of 'R' with: R = Range(low=0, high=10), but then of course I don't get the dynamic initialization of the Range's high parameter that I'm seeking.
All suggestions gratefully accepted.
* Edit after Jonathan's response *
Here's the simple solution to my question using Jonathan's helpful suggestion below:
python - traitsui 表编辑器中的项目顺序
我正在尝试使用 traitsui TableEditor 来允许用户与某些数据进行交互。
在 wx 后端,编辑器似乎按照它们在正在编辑的特征中列出的顺序将内容转储到表中。但是使用 qt 后端,条目按字段排序。
下图显示了一个包含一些项目的示例表。如您所见,工具栏指示条目当前按 Electrode 字段排序,该字段没有任何__cmp__
方法,但确实有一个__str__
我认为足够好的方法。用户可以单击工具栏上的其他标题以按不同的顺序排序,但正如您所见,这些标题没有任何默认值。
问题是,应该在表格左侧的 Electrode 字段对于排序这个表格来说是一个非常无用的东西,它使得对用户可能需要的底层模型进行正确的更改单击所有项目以找出正确的条目。
列表本身中项目的顺序(由该表中的数字显示,但您无法单击它们)结果证明是在此用例中呈现项目的更智能的顺序。
是否有某种方法可以覆盖此行为并在一开始就指定更智能的初始顺序?
enthought - 使用 TraitsUI message() 按钮?
好的,所以我在 TraitsUI 中发现有用于 error() 和 message() 的函数将文本连同可选按钮(如确定和/或取消)一起放入“消息框”。
如何捕获从 message() 或 error() 调用中按下的 OK 或 Cancel 按钮?
我被要求提交一个例子......这是我拼凑的一个简单的小例子:
如果单击中间按钮(对于消息框),它有 3 个按钮...确定、取消和不同的东西...如果单击确定或取消,则返回消息,我可以测试返回值,但是,如果我的自定义按钮(不同的东西)被点击,什么都没有发生?如何判断我的自定义按钮是否被按下?