#python #gtk #pygtk #glade #gtk2
Вопрос:
Я уже некоторое время с некоторым успехом изучаю python. Мне даже удалось создать одну или две (простые) программы, используя PyGTK Glade.
Дело в том, что я не уверен, что лучший способ использовать GTK с python-это создавать интерфейсы с помощью Glade.
Мне было интересно, могут ли более опытные из нас (помните, я всего лишь новичок) указать на преимущества и предостережения использования Glade, в отличие от создания всего в самом коде (при условии, что изучение правильных привязок gtk точно не будет проблемой).
Комментарии:
1. Существует больше разработчиков пользовательского интерфейса, чем просто glade, возможно, вам следует упомянуть «конструктор пользовательского интерфейса» вместо просто glade.
2. Использование графического инструмента, который создает XML пользовательского интерфейса GtkBuilder, безусловно, является стандартным для большинства программ gtk. Это не избавляет вас от работы с gtk api самостоятельно, но, безусловно, облегчает другим людям получение вашего кода.
Ответ №1:
Я бы сказал, что это зависит от того: если вы обнаружите, что с помощью Glade вы можете создавать приложения, которые хотите или должны создавать, это абсолютно нормально. Однако, если вы действительно хотите узнать, как работает GTK, или у вас есть какие-то нестандартные требования к пользовательскому интерфейсу, вам придется покопаться во внутренних компонентах GTK (которые не так сложны).
Лично я обычно нахожусь около 5 минут в богатом клиенте, когда мне нужна какая-то функция или настройка, которые просто невозможны с помощью такого дизайнера, как Glade или Stetic. Возможно, дело только во мне. Тем не менее, мне по-прежнему полезно загружать дизайн окон с помощью графического инструмента.
Моя рекомендация: если привлечение богатых клиентов с помощью GTK станет важной частью вашей работы/хобби, изучите также GTK, так как когда-нибудь вам понадобится написать этот код.
P.S. Лично я считаю, что Stetic превосходит Glade по дизайну, хотя и немного более неустойчив.
Комментарии:
1. Поскольку Glade создает XML-файлы вместо фактического кода на python, есть ли хороший способ начать проект с Glade, а затем добавить код вручную или настроить его? Я только начал изучать глейд лично.
2. Я думаю, что этот комментарий стоит отдельного вопроса, так что, нет?
Ответ №2:
Используйте GtkBuilder вместо Glade, он интегрирован в сам Gtk вместо отдельной библиотеки.
Основное преимущество Glade заключается в том, что гораздо, гораздо проще создать интерфейс. Это немного больше работы для подключения обработчиков сигналов, но я никогда не чувствовал, что это имеет большое значение.
Комментарии:
1. Вы также можете создавать файлы, которые можно использовать с помощью GtkBuilder с Glade. Теоретически, это так, поскольку Глейд все еще портит их. Лучшим вариантом может быть создание графического интерфейса с помощью glade, сохранение его в виде файла glade, а затем преобразование с помощью gtk-builder-convert.
2. Какую версию Glade вы используете? Последние несколько версий имеют возможность сохранения в любом формате GtkBuilder или в формате LibGlade. Поэтому вам не нужно использовать gtk-builder-convert.
3. На самом деле,
gtk-builder-convert
вы подавитесь форматом GtkBuilder , созданным компаниейglade-3
, чтобы вы знали, что вы уже совместимы.
Ответ №3:
Glade очень полезен для создания интерфейсов, это означает, что вы можете легко изменить графический интерфейс, не занимаясь кодированием. Вы обнаружите, что если вы хотите сделать что — нибудь полезное (например, создать древовидное изображение), вам придется ознакомиться с различными частями документации GTK-на практике найти хороший учебник/примеры.
Ответ №4:
Я начал использовать glade, но вскоре перешел к тому, чтобы просто делать все в коде. Поляна хороша для простых вещей, и это хорошо, когда вы изучаете, как GTK организует виджеты (как вещи упакованы и т. Д.). Однако, создавая все в коде, вы обладаете гораздо большей гибкостью. Кроме того, у тебя нет зависимости от глейда.
Ответ №5:
Обычно я начинаю с Glade, пока не дойду до того момента, когда в нем не будет нужных мне функций, например, создание мастера. Пока я использую стандартные виджеты, которые предоставляет Glade, на самом деле нет причин вручную кодировать графический интерфейс.
Чем более комфортно мне становится с тем, как Glade форматирует код, тем лучше становится мое ручное кодирование. Не говоря уже о том, что Glade очень прост в использовании для создания базовой структуры, поэтому вам не нужно беспокоиться обо всех инициализациях.
Ответ №6:
Если вы пишете традиционное приложение с графическим интерфейсом, которое использует множество стандартных компонентов из GTK (кнопки, метки, контейнеры и т. Д.), Я бы лично выбрал Glade Kiwi (удобная платформа для создания приложений с графическим интерфейсом GTK ).
Единственным большим преимуществом использования Glade является то, что он значительно сокращает код компоновки/упаковки. Вот чрезвычайно простой пример, в котором уже показаны проблемы с созданием графического интерфейса вручную (без использования каких-либо вспомогательных функций).:
container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)
Для получения дополнительных примеров посмотрите здесь. Даже если вы пишете сложный пользовательский виджет, вы всегда можете создать заполнитель в Glade и заменить его после создания экземпляра.
Теперь команде Glade не потребуется слишком много времени, чтобы выпустить новую версию конструктора (3.6.0). Эта новая версия добавит поддержку GtkBuilder, которая заменяет libglade (фактическую библиотеку, преобразующую XML-файлы Glade в дерево виджетов). Новый дизайнер Glade также снова добавляет поддержку определения каталогов (наборов виджетов) в Python, так что вы можете легко добавлять свои собственные пользовательские виджеты.
Ответ №7:
Я рекомендую использовать Glade для быстрого развития, но не для обучения. Почему? потому что иногда вам нужно будет настроить некоторые виджеты, чтобы они работали так, как вы хотите, и если вы на самом деле не знаете/не понимаете атрибутов свойств каждого виджета, у вас будут проблемы.
Ответ №8:
Во-первых, начните рассматривать это в перспективе.
Вы будете использовать GTK. Это огромная библиотека C, построенная в 1993 году с использованием лучших традиций стиля кодирования 1970-х годов. Он был создан, чтобы помочь реализовать GIMP, конкурента Photoshop, который хочет быть с ошибками пользовательского интерфейса легенды. Типичное поле графического интерфейса может содержать сорок или более параметров, в основном повторяющихся, имеющих геттеры и сеттеры. Будет больно.
Сам GTK управляет полной системой динамических типов на C с помощью GObject. Это делает отладку особым удовольствием, требующим ручного прохода по массивам указателей на методы, заполненные списками общих аргументов с неявным наследованием. Вы также будете переходить через библиотеки Pango, когда вы меньше всего этого ожидаете, например, используя константу Pango для определения того, где в метке многоточие, когда страница маленькая. Ожидай еще большей боли.
К настоящему времени вы, вероятно, обещаете обернуть все ваши взаимодействия GTK в архитектуру модели-Представления-контроллера, специфичную для вашего приложения. Это хорошо.
Использование Glade, или GtkBuilder, или Stetic поможет решить огромную проблему связи сорока параметров с функцией. Glade предоставляет базовый конструктор графического интерфейса для перетаскивания компонентов вместе. Параметры и унаследованные параметры несколько разделены. Выходные данные Glade-это XML-файл .glade, который вы затем прочитаете, прикрепите свои обратные вызовы («обработчики сигналов») к функциям с одинаковыми именами и запросите или обновите версию этого XML в памяти, чтобы получить виджеты, которыми вы затем используете PyGTK для управления. Сама поляна скрипучая и не очень ухоженная.
Использование PyGTK дает вам раздражающе мелкозернистый контроль для построения вашего графического интерфейса. Это будет подробный код для копирования и вставки. Каждый атрибут будет отдельным вызовом функции. Установщик атрибутов ничего не возвращает, поэтому о цепочке вызовов не может быть и речи. Обычно ваша среда разработки предоставляет лишь минимальную помощь в том, что означают функции, и вы будете постоянно ссылаться на DevHelp или какой-либо другой инструмент.
Можно было бы почти ожидать, что графические интерфейсы GTK должны были потерпеть неудачу.
Комментарии:
1. Ответ не по теме, но мне он понравился, потому что он действительно подробный. К сожалению, я не могу подтвердить его точность.
2. Спасибо. Полагаю, это шутка, как и любая критика в адрес Gnome.
Ответ №9:
Для быстрых и простых экранов я использую Glade. Но для всего, что требует более тонких уровней управления, я создаю пользовательские классы для того, что мне действительно нужно (это важно, потому что слишком легко увлечься обобщениями).
С помощью специальных классов узких приложений я могу быстро изменить внешний вид и ощущение приложения в целом из одного места. Скорее, это похоже на использование CSS для обеспечения согласованности веб-сайтов.
Ответ №10:
Лично я бы рекомендовал закодировать его вместо использования Glade. Я все еще изучаю python и PyGTK, но скажу, что написание пользовательского интерфейса вручную дало мне много информации о том, как все работает под капотом.
Как только вы усвоите это, я бы сказал, чтобы дать глейду или другим дизайнерам пользовательского интерфейса попробовать, но определенно научитесь сначала «трудным» способом.
Ответ №11:
Вы можете использовать glade-2 для проектирования и использования glade2py.py для создания чистого кода pygtk он использует pygtkcompat для поддержки gtk3
Комментарии:
1. Хотя эта ссылка может дать ответ на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответы только по ссылкам могут стать недействительными, если страница, на которую дана ссылка, изменится.
2. @JuJoDi этот код слишком длинный, не могу вставить туда.