首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >traitsui编辑器的当前大小

traitsui编辑器的当前大小
EN

Stack Overflow用户
提问于 2013-06-29 05:01:20
回答 1查看 120关注 0票数 0

我在traitsui应用程序中有一个用于蛋黄酱场景的tvtk SceneEditor。在定义这个编辑器时,我要求它的大小为500x500。

由于使用了mayavi工具栏,场景编辑器本身会认为在正常情况下,它的大小小于此大小:

代码语言:javascript
复制
>>> self.scene.scene_editor.get_size()
wx.Size(500, 468)

当窗口放大时,编辑器会占用更多的空间,它也会理解这一点

代码语言:javascript
复制
>>> self.scene.scene_editor.get_size()
wx.Size(500, 781)

但是,如果编辑器变得更小,它将拒绝占用更少的空间(即使内容可以很容易地重新缩放),因为编辑器被指定为占用500x500。它允许编辑器调整大小,但只是切断了部分显示,直到它再次放大。

我想知道是否有一种方法可以a)询问编辑器当前在屏幕上显示了多少(而不是编辑器愿意显示的最小尺寸),以及b)将编辑器设置为默认的500x500,但如果编辑器变小了,是否愿意要求其内容重新缩放。

我使用的是wxpython后端。

编辑:场景包含在layout='split'组中也很重要--在探索这个问题并遇到wx在添加traitsui小部件时生成的大量sizers之后,我意识到这可能也很重要。

EN

回答 1

Stack Overflow用户

发布于 2013-07-02 22:51:59

经过几天的讨论,我得到了a)部分的答案(尽管它很复杂,不一定是通用的,而且可能是特定于layout='split'布局的)。

至少在layout='split'中,self.scene.scene_editor.control.Parent.Parent.Size描述了显示编辑器的视区的大小,但我可以很容易地想象到,对于其他布局类型(我没有测试过),它会有所不同。

有了这些信息,我设法编写了一个包装器,在制作快照之前将编辑器的大小调整为至少这么小。

更多血淋淋的细节:

self.scene.scene_editor.control关联的sizer不是正确的,可能是因为该sizer引用了包含编辑器的窗口,而与包含拆分器小部件中的窗口大小关联的sizer被允许“覆盖”该窗口并忽略其大小。

我发现添加traitsui小部件的过程定义了太多的框(假设小部件的数量不是很少),结果导致wx窗口及其关联的wx Sizer大量过剩,所有这些都依赖于它们的子小部件来确定当前的大小,所以很难控制这样的事情。这可能就是enaml存在的原因;这样用户就可以显式地指定这些约束。也许有一天我会将我的程序转换为使用enaml,但对于目前运行得很好的程序来说,这似乎需要很大的努力。

我仍然不知道b)部分的答案,所以我把这个问题留待解决。如果有一种方法可以在构造时指定wx size的混乱,允许将此窗口的大小调整到其初始大小以下,那将是很好的,但可能没有一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17373612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档