【问题标题】:GTK+ alignment and resizing with GladeGTK+ 使用 Glade 对齐和调整大小
【发布时间】:2017-02-21 15:37:42
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: gtk gtk3 gtk# glade


    【解决方案1】:

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

    您也可以阅读此布局“指南”:

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

    TLDR:使用GtkGrid。

    【讨论】:

    • 是的,你是对的。我检查了网格,经过 30 分钟的操作后,我将我的 UI 移植到了新的自适应系统。谢谢!调整大小问题已通过边距解决!
    【解决方案2】:

    GtkLayout 不是为拉伸、收缩等而设计的。您可能希望将 GtkBox 设置为 GTK_EXPAND(True) 和/或 GTK_FILL(True) 。在 Glade 中选择您的标签、按钮或子小部件,然后查看 Packing 选项卡。

    【讨论】:

    • 我怎样才能只用盒子和网格制作相同的用户界面?据我了解,在该容器中调整小部件的大小是不可能的。
    • 除了expand 和fill 之外的另一件事是Glade 中Common 选项卡下的alignment。这可以将您的框/网格移动到中心或边缘等。还可以在 General 选项卡下检查框/网格的同质属性。此外,其中一些可用于框/网格内的按钮/标签,允许您将它们缩小或居中等。
    • 是的,我明白了。但是,例如,如何调整网格单元的大小?即使没有同质属性,它似乎也有限制。
    • 有时entry 控制所有涉及的小部件的宽度。尝试在General选项卡下将width in chars和maximum width in chars设置为大于0。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 2017-01-29
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      相关资源
      最近更新 更多