在带有滚动条的区域(窗口)内使用鼠标调整gtk2小部件的大小?

在带有滚动条的区域(窗口)内使用鼠标调整gtk2小部件的大小?,gtk2,Gtk2,我想在Python2.7和gtk2上开发一个小部件容器,它将被放置在一个滚动窗口中,并且可以在窗口中自由移动和调整大小,这样:在小部件中单击并拖动将在窗口内移动它;当小部件的角/边在窗口中可见时,它将显示用于调整大小的拖动手柄-否则,如果它大于窗口区域,它将在单击鼠标中键时放大和缩小 当然,我想将这个小部件的自定义编码量保持在最低限度,所以我想先看看gtk2中提供了什么。事实证明,唯一暴露调整大小拖动控制柄的元素是gtk.Window——而且,只有当它是主窗口或根窗口时;否则,如果窗口放置在小部

我想在Python2.7和gtk2上开发一个小部件容器,它将被放置在一个滚动窗口中,并且可以在窗口中自由移动和调整大小,这样:在小部件中单击并拖动将在窗口内移动它;当小部件的角/边在窗口中可见时,它将显示用于调整大小的拖动手柄-否则,如果它大于窗口区域,它将在单击鼠标中键时放大和缩小

当然,我想将这个小部件的自定义编码量保持在最低限度,所以我想先看看gtk2中提供了什么。事实证明,唯一暴露调整大小拖动控制柄的元素是gtk.Window——而且,只有当它是主窗口或根窗口时;否则,如果窗口放置在小部件中,其大小显然是由小部件设置的,因此没有拖动手柄,而没有菜单、标题栏等。我想知道为什么会出现这种情况——这似乎是由于gtk开发人员认为多文档接口MDI是邪恶的,请参见或

为了演示我想要的行为,我使用了来自的PyQt4代码,因为事实证明,Qt确实有一个MDI区域。因此,这里是它的要点-如果一个角落是可见的,一个调整大小的拖动手柄出现,并调整大小拖动行动可以启动:

因此,当您拖动窗口外的角时,滚动条会自动指示内部小部件的新大小/位置。请注意,在下面的屏幕截图中,窗口也移动了一点,这是手动的,也是意外的:

再说一次,我不需要像标题栏、菜单那样的窗口,只需要一个小部件容器,这样我就可以根据情况的需要在其中放置一个表,比如TreeView或一个图像,至少不用担心重新计算外部滚动条,我希望我必须自己编写其余的自定义行为。另外,我现在只需要在这样的窗口中放置一个小部件,这样就不会有多个文档

虽然Qt似乎在某种程度上提供了这一点,但我现在不可能进入到这样做的水平;WxWindows也一样,例如,请参见-可能,但由于没有代码,我看不出是否需要几何计算编码


所以我想知道——是否有一个小部件我可能错过了,它可以实现上述行为,并且可以作为定制的基础?如果没有,我有什么办法最终用Python在gtk2上实现上述内容?

我不确定这是否可行,但我建议研究一下;将内部小部件放入其中,并将其呈现给GTKScrolledwindowo中的GtkDrawingArea。这可能会使滚动条根据绘图区域的大小正常工作

你不会得到的:

窗口标题栏,您必须自己渲染它们,因为GTK不知道它们,它们是窗口管理器的一部分。注意,Qt示例中的内部窗口与外部窗口的标题栏不同-我怀疑这是同一件事。 拖动控制柄以调整窗口大小,您必须自己编写这些控制柄,正如您所期望的那样。 您可能还想看看GladeGUI设计器是如何做到这一点的