python PyGObject:图形,固定Z顺序

2w3rbyxf  于 2023-02-11  发布在  Python
关注(0)|答案(3)|浏览(94)

我用的是Gtk.Fixed和一个放图像的视口,有时候会重叠。我怎样才能像html那样设置z轴呢?

42fyovps

42fyovps1#

Gtk.Fixed不支持设置z顺序,它不适用于重叠的小部件,因此z顺序是任意的,可能取决于小部件的添加顺序。
从你的问题看不出你的意图是什么如果你有意重叠小部件,请使用Gtk.Overlay。2如果你不打算重叠它们,那么你应该使用一个更通用的容器,比如Gtk.Grid,它会考虑小部件的大小。

szqfcxe2

szqfcxe22#

就像番茄说的,我不得不使用Gtk.Overlay。我使用了一个有3个Gtk.Layout的覆盖层,就像层一样,效果很好。

fhity93d

fhity93d3#

我只使用了C绑定,但我会尽我所能,希望能正确地回答Python绑定的问题。
一般来说,自GTK4以来,您可以使用以下命令移动小工具

widget.insert_before (sibling, parent)

您可能希望首先获取兄弟(将位于小部件前面)和其父。
该函数期望父节点是兄弟节点的父节点,因此可以假设:

parent = sibling.get_parent ()

至少在GtkFixed中(但也可能在其他容器中),兄弟容器是从下往上排序的,所以第一个孩子是离后面最远的一个。“在前面插入”可以把你的小部件移到后面。
不过要注意,根据维护人员的说法,这应该只在自定义小部件中使用,而不是在应用程序范围内使用。函数的API中也提到了这一点。
但是从文档来看,我不清楚这是否法律的。我怀疑这种方式是否被支持。但是我也怀疑,GtkFixed是否记录了关于孩子的命令,因此,我认为在GtkFixed中移动孩子是可以的,尽管是非法的。
像这样到处移动小部件也让我的应用程序崩溃了,只要检查器打开,就像一个提醒。
要从下到上迭代小部件,可以使用sibling = parent.get_first_child()sibling = parent.get_next_sibling(),或者使用Widget上定义的迭代器。

相关问题