GTK+ 使用 Glade 对齐和调整大小

GTK+ alignment and resizing with Glade

我正在 Glade (GTK# 3.20 + C#) 中制作应用程序界面原型,并通过 CssProvider 使用我的 CSS 样式。我有这个:

问题是我使用 GTKLayout 作为我的主要容器,我认为这是创建 UI 的错误方法。我正在使用这种类型的容器,因为它使我能够在原型制作期间根据需要在 Glade 中调整和拖动小部件。不好的是,当我调整应用程序大小时,小部件卡在应用程序的左上角 window。我为 window 设置了最小尺寸,但我希望 UI 在 window 尺寸增加时自适应。您可以在下面看到问题:

我尝试使用 Box 容器、Grid 容器等创建此 UI。但我总是遇到同样的问题:所有小部件的大小都是固定的(在原型制作期间在 Glade 中)并且看起来不可能用它创建复杂的 UI。

所以,我希望一些有经验的人向我解释一些事情:

  1. 如果我以错误的方式使用 GTKLayout,我应该如何组织我的小部件(在哪些容器中)以便能够按照我的需要调整它们的大小(在 Glade 中)并具有与我的屏幕截图相同的外观。
  2. 如果使用GTKLayout不是一个坏习惯,我应该如何解决对齐问题才能做出自适应UI?
  3. 如果使用 GTKLayout 是一种不好的做法,我应该如何制作自适应 UI 以及使用哪些容器?

这是 window 的结构(是的,我正在使用 Label 小部件来创建颜色面板):

GtkLayout 并非设计用于拉伸、收缩等。您可能希望将 GtkBox 设置为 GTK_EXPAND(True) 和/或 GTK_FILL(True) 。在 Glade select 中,您的标签、按钮或子部件并在 Packing 选项卡下查看。

查看不同的 containers available、运行 gtk-demo 以了解示例是如何构造的,在现有应用程序上使用 gtk-inspector 以了解它们是如何放置的出。

您也可以阅读此布局"guide":

https://python-gtk-3-tutorial.readthedocs.io/en/latest/layout.html

TLDR:使用 GtkGrid.

我认为在这种情况下最好的选择是 GtkFixed。