Поляна или никакая поляна: Что лучший способ состоит в том, чтобы использовать PyGtk?

, если вы пишете

int b = 0;
foo(b);

int foo(int a)
{
  a = 1;
}

, вы не меняете 'b', потому что a является копией b

, если вы хотите изменить b, вам нужно будет передать адрес из b

int b = 0;
foo(&b);

int foo(int *a)
{
  *a = 1;
}

одинаково для указателей:

int* b = 0;
foo(b);

int foo(int* a)
{
  a = malloc(10);  // here you are just changing 
                   // what the copy of b is pointing to, 
                   // not what b is pointing to
}

, поэтому для изменения, где b указывает, чтобы передать адрес:

int* b = 0;
foo(&b);

int foo(int** a)
{
  *a = 1;  // here you changing what b is pointing to
}

hth

31
задан liberforce 30 November 2012 в 12:54
поделиться

10 ответов

Я сказал бы, что это зависит: если Вы находите, что использование Поляны, можно создать приложения, которые Вы хотите или должны сделать, чем, это прекрасно абсолютно. Если однако Вы на самом деле хотите изучить, как GTK работает, или у Вас есть некоторые нестандартные требования UI, которые Вы будете иметь для рытья во внутренности GTK (которые не являются сложным).

Лично я - обычно приблизительно 5 минут в толстый клиент, когда мне нужны некоторая функция или настройка, которая просто невозможна через разработчика, такого как Поляна или Stetic. Возможно, это - просто я. Тем не менее, для меня все еще полезно загрузить дизайн окна с помощью графического инструмента.

Моя рекомендация: если создание толстых клиентов с помощью GTK будет значительной частью задания/хобби, затем узнают, что GTK также начиная с Вас будет потребность написать тот код когда-нибудь.

P.S. Я лично нахожу Stetic превосходить Поляну для дизайнерской работы, если нестабильный.

20
ответ дан 27 November 2019 в 22:19
поделиться

Поляна очень полезна для создания интерфейсов, это означает, что можно легко изменить GUI, не делая большого кодирования. Вы найдете, что, если Вы хотите сделать что-либо полезное (например, создавать treeview) необходимо будет познакомиться с различными частями документации GTK - в практике, находящей хорошее учебное руководство/примеры.

5
ответ дан 27 November 2019 в 22:19
поделиться

Я начал использовать поляну, но скоро переместился в просто выполнение всего в коде. Поляна хороша для простых вещей, и хорошо, когда Вы изучаете, как GTK организует виджеты (как вещи упаковываются, и т.д.). Создавая все в коде, однако, у Вас есть намного больше гибкости. Плюс, у Вас нет зависимости от поляны.

5
ответ дан 27 November 2019 в 22:19
поделиться

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

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

4
ответ дан 27 November 2019 в 22:19
поделиться

Используйте GtkBuilder вместо Поляны, он интегрируется в сам Gtk вместо отдельной библиотеки.

основное преимущество Поляны - то, что очень, намного легче создать интерфейс. Это - немного больше работы к обработчикам сигналов соединения, но я никогда не чувствовал, что имеет значение очень.

12
ответ дан 27 November 2019 в 22:19
поделиться

Если Вы пишете традиционное приложение GUI, какие повторные использования много стандартных компонентов от GTK + (кнопки, маркировки, контейнеры и т.д.) я лично пошел бы с Поляной + новозеландец (платформа удобства для создания GTK + приложения GUI).

единственное самое большое преимущество для использования Поляны состоит в том, что это значительно уменьшает код расположения/упаковки. Вот чрезвычайно просто пример, который уже показывает проблемы с ручной разметкой GUI (не используя функций помощника):

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

Для большего количества примеров берут взгляд здесь . Даже если Вы пишете сложный пользовательский виджет, можно всегда создавать заполнителя в Поляне и замене что после инстанцирования.

Это не должно быть слишком длинно теперь, чтобы команда Поляны выпустила новую версию разработчика (3.6.0). Эта новая версия добавит поддержку GtkBuilder, который заменяет libglade (фактическая библиотека, которая преобразовывает XML-файлы Поляны в дерево виджета). Новый разработчик Glade также еще раз добавляет поддержку определения каталогов (наборы виджетов) в Python, таким образом, можно легко добавить собственные виджеты.

4
ответ дан 27 November 2019 в 22:19
поделиться

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

2
ответ дан 27 November 2019 в 22:19
поделиться

Лично я бы порекомендовал кодировать его вместо использования Glade. Я все еще изучаю python и pyGtk, но скажу, что выписывание пользовательского интерфейса вручную дало мне много понимания того, как все работает под капотом.

После того, как вы это узнаете, я бы сказал, чтобы дать «поляне» или другим дизайнерам пользовательского интерфейса попробовать, но обязательно научитесь делать это «сложным» способом.

1
ответ дан 27 November 2019 в 22:19
поделиться

Для быстрых и простых экранов я использую Поляну. Но для чего-либо, чему нужны более прекрасные уровни управления, я создаю пользовательские классы для того, в чем я на самом деле нуждаюсь (это важно, потому что слишком легко увлечься обобщениями).

С тощие приложения определенные классы, я могу быстро изменить приложение стиля, широкое от единственного места. Скорее как использование CSS для поддержания непротиворечивости для веб-сайтов.

1
ответ дан 27 November 2019 в 22:19
поделиться

Во-первых, начните ставить это в перспективе.

Вы будете использовать GTK. Это огромная библиотека C, построенная в 1993 году, используя лучшие традиции в стиле кодирования 1970-х годов. Он был построен, чтобы помочь реализовать GIMP, Photoshop конкурентов Wanna-Be с ошибками пользовательского интерфейса легенды. Типичное поле GUI может иметь сорок или более параметров, в основном повторяющихся, имеющих Getter и Getters. Там будет боль.

Само GTK управляет полной системой динамического типа в C с помощью GOBJECT. Это делает отладку особой радости, которая требует вручную прогуливаться через массивы указателей на методы, полные общих списков аргументов с неявным наследством. Вы также будете переходить через библиотеки Pango, когда вы меньше всего этого ожидаете, например, используя постоянную Pango для того, где в метке ELLIPSIS идет, когда страница немана. Ожидайте большей боли.

К настоящему времени вы, вероятно, вы можете обернуть все ваши взаимодействия GTK в архитектуре View-Controller Model, специфичной для вашего приложения. Это хорошо.

Использование GLADE или GTKBUILDER или STECECAL, поможет коралловую проблему огромной связи сорока параметров к функции. Glade предоставляет базовый построитель GUI для перетаскивания компонентов вместе. Параметры и унаследованные параметры несколько разделены. Выходной сигнал GLADE - это файл XML .glade, который вы будете прочитать, прикрепите свои обратные вызовы («обработчики сигналов»), чтобы идентично названные функции и запросите или обновлять версию в памяти этого XML, чтобы получить виджеты, которые вы тогда используете PYGTK манипулировать. Сама поляна - скрипучий, а не ухоженный.

Использование PYGTK дает вам раздражающе тонкий зернистый контроль, чтобы построить ваш графический интерфейс. Это будет Verbose, Copy-and-вставной код. Каждый атрибут будет отдельный вызов функции. Установка атрибута не возвращает ничего, поэтому цепочки вызовов не выходит из вопроса. Обычно ваша IDE даст только минимальную помощь о том, какие функции означают, и вы будете постоянно ссылаться на Devhelp или какой-то другой инструмент.

Осталось бы почти ожидать, что GTK Guis должен потерпеть неудачу.

1
ответ дан 27 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: