Подтвердить что ты не робот

Поляна или без поляны: что лучше всего использовать PyGtk?

Я изучаю python некоторое время с некоторым успехом. Мне даже удалось создать одну или две (простые) программы, используя PyGtk + Glade.

Дело в том, что я не уверен, что лучший способ использовать GTK с python - это создание интерфейсов с использованием Glade.

Мне было интересно, могут ли более опытные из нас (помните, я просто начинающий) указать преимущества и оговорки использования Glade, а не создавать все в самом коде (предполагая, что изучение правильных привязок gtk не будет проблемой).

4b9b3361

Ответ 1

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

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

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

P.S. Я лично считаю Stetic лучше, чем Glade для дизайнерских работ, если немного более неустойчиво.

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Единственное большое преимущество использования Glade заключается в том, что он значительно уменьшает код компоновки/упаковки. Здесь очень простой пример, который уже показывает проблемы с ручной установкой графического интерфейса (без использования вспомогательных функций):

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

Сначала начните использовать это в перспективе.

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

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

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

Использование Glade, или gtkBuilder, или Stetic, поможет устранить огромную проблему связи сорок параметров с функцией. Glade предоставляет базовый графический редактор для перетаскивания компонентов вместе. Параметры и унаследованные параметры несколько отделяются. Вывод Glade - это XML файл .glade, который вы затем прочитаете, присоедините свои обратные вызовы ( "обработчики сигналов" ) к идентично названным функциям и запросите или обновите версию этого XML в памяти, чтобы получить виджеты, которые вы затем используете pyGTK манипулировать. Сама по себе скала является скрипучей и не ухоженной.

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

Можно было бы ожидать, что графические интерфейсы GTK предназначены для отказа.

Ответ 11

Вы можете использовать glade-2 для проектирования и использовать glade2py.py для создания чистого кода pygtk, он использует pygtkcompat для поддержки gtk3