2017-02-21 32 views
0

Я прототипирую интерфейс приложения в Glade (GTK # 3.20 + C#) и использую стили CSS через CssProvider. У меня есть это:GTK + выравнивание и изменение размера с помощью Glade

enter image description here

Проблема заключается в том, что я использую GtkLayout как мой основной контейнер, и я думаю, что это неправильный путь для создания пользовательского интерфейса. Я использую этот тип контейнера, потому что он дает мне возможность изменять размеры и перетаскивать виджеты, как я хочу, во время поляризации во время прототипирования. Плохо то, что виджеты застряли в левом верхнем углу окна приложения, когда я изменяю его размер. Я сделал минимальный размер для окна, но я хочу, чтобы пользовательский интерфейс был адаптивным, когда размер окна увеличивается. Вы можете увидеть проблему ниже:

enter image description here

Я попытался создать этот пользовательский интерфейс с Box контейнер, контейнер сетки и так далее. Но у меня всегда была одна и та же проблема: размер всех виджетов был исправлен (в Glade во время прототипирования), и казалось, что с ним невозможно создать сложный пользовательский интерфейс.

Итак, я хочу некоторые опытные люди, чтобы объяснить мне несколько вещей:

  1. Если я использую GtkLayout в неправильном направлении, как я должен организовать свои виджеты (в которых контейнеры), чтобы иметь возможность изменять размер их, как я хочу (в Поляне), и иметь такой же вид на моем снимке экрана.
  2. Если использовать GTKLayout не так уж плохо, как решить проблему выравнивания, чтобы создать адаптивный интерфейс?
  3. Если это неправильная практика использования GTKLayout, как мне создать адаптивный интерфейс и какие контейнеры?

Вот структура окна (да, я использую этикетки виджет для создания цветных панелей):

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 минут манипулирования я портировал свой пользовательский интерфейс в новую адаптивную систему. Благодаря! Задача по изменению размера была решена с помощью полей! –

0

GtkLayout не предназначен, чтобы растянуть, сжать и так далее. Вероятно, вы хотите установить GtkBox в GTK_EXPAND(True) и/или GTK_FILL(True). В Glade выберите свой ярлык, кнопку или дочерний виджет и посмотрите под вкладкой . Упаковка.

+0

И как я могу сделать тот же интерфейс только с коробками и сеткой? Как я понимаю, изменить размеры виджетов внутри этих контейнеров невозможно. –

+0

Еще одна вещь помимо 'expand' и' fill' - это 'alignment' на вкладке * Common * в Glade. Это может привести вашу коробку/сетку к центру или кромке и т. Д. Также проверьте однородное свойство box/grid на вкладке * General *. Кроме того, некоторые из них доступны кнопке/метке в коробке/сетке, что позволяет сделать их меньшими или центрированными и т. Д. – theGtknerd

+0

Да, я вижу.Но как я могу изменить размер ячейки сетки, например? Кажется, что Он имеет пределы даже без однородного свойства. –

0

Я думаю, что в этом случае лучшим вариантом будет GtkFixed.