2017-02-21 33 views
0

我原型在Glade(GTK#3.20 + C#)中的应用程序接口,并通过CssProvider使用我的CSS样式。我有这样的:GTK +对齐和调整大小与格莱德

enter image description here

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

enter image description here

我试图创建与Box容器,Grid容器等这个UI。但我总是遇到同样的问题:所有小部件的大小都是固定的(在原型制作过程中在Glade中),看起来不可能用它创建复杂的UI。

所以,我想一些有经验的人来解释我的几件事情:

  1. 如果我在一个错误的方式使用GTKLayout我应该如何安排我的小部件(其中集装箱)不得不调整能力他们就像我想要的(在格莱德),并在我的截图有相同的样子。
  2. 如果使用GTKLayout不是一个错误的做法,我应该如何解决对齐问题以创建自适应UI?
  3. 如果使用GTKLayout是一种不好的做法,我应该如何制作一个自适应UI以及哪些容器?

这里是窗口(是的,我使用标签控件来创建色块)结构:

enter image description here

回答

0

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

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

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

TLDR:使用GtkGrid

+0

Yeeaah,你是对的。我检查了Grid,经过30分钟的操作后,我将UI移植到新的自适应系统中。谢谢! 调整大小问题已通过利润率解决! –

0

GtkLayout没有设计伸展,收缩,等等。您可能想要将您的GtkBox设置为GTK_EXPAND(True)和/或GTK_FILL(True)。在Glade中选择您的标签,按钮或子部件,然后在包装选项卡下查找。

+0

我怎样才能使相同的用户界面只与框和网格?根据我的理解,调整容器内的小部件是不可能的。 –

+0

除了'expand'和'fill',另一件事是Glade * Common *选项卡下的'alignment'。这可以将您的方框/网格移动到中心或边缘等。同时检查* General *选项卡下方框/网格的同质性。此外,其中一些可用于盒/网格内的按钮/标签,使您可以使它们更小或居中等。 – theGtknerd

+0

是的,我明白了。但是,我怎样才能调整网格单元格?它似乎即使没有同质性也有局限性。 –

0

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