Основанный на разметке графический интерфейс для Python

Я хочу заняться программированием некоторых серьезных приложений на основе GUI, но когда я смотрю на такие вещи, как Swing / SWT из Java, я не могу не ненавидеть программирование интерфейса GUI, создавая объекты «виджетов», заполняя их и вызывая методы для их.

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

Я видел HTMLayout, и мне нравится эта идея, но пока она кажется только на C ++.

Я ищу библиотеку Python (или даже проект WIP) для создания GUI на основе разметки.

ОБНОВИТЬ

Причина, по которой я не могу принять XML QT, та же самая причина, по которой я ненавижу программный подход; вы собираете каждый виджет отдельно и указываете каждое его свойство в отдельной строке. Это не дает никаких преимуществ по сравнению с программным способом.

12.12.2008 22:10:08
8 ОТВЕТОВ
РЕШЕНИЕ

Вы можете попробовать XUL Mozilla. Он поддерживает Python через XPCOM.

Посмотреть этот проект: pyxpcomext

XUL не скомпилирован, он упакован и загружен во время выполнения. Firefox и многие другие замечательные приложения используют его, но большинство из них используют Javascript для сценариев вместо Python. Есть один или 2, использующие Python, хотя.

7
21.04.2009 14:16:40

Это XML, а не Python, но посмотрите на Open Laszlo

-1
12.12.2008 22:14:46

Вы должны посмотреть на Qt, который вы можете использовать из Python, используя отличный интерфейс PyQt (почему они не назвали его QtPy --- cutiepie, получите его? --- Я никогда не пойму).

С Qt вы можете выбрать программный графический интерфейс (который вам не нужен) или использовать разметку XML. Этот XML-файл может быть скомпилирован в код заранее или загружен с помощью короткой команды. Последнее является нормальным способом работы с использованием PyQt.

Qt является универсальным, высококачественным, кроссплатформенным, и вы, вероятно, используете его уже, не зная об этом. Официальное клиентское приложение Skype написано на Qt, если я правильно помню.

Изменить: Просто добавив несколько ссылок, чтобы ОП получить некоторое чувство ...

2
12.12.2008 22:48:52
Я уже был знаком с Qt, хотя и не углубленно, но было бы
hasen 12.12.2008 22:53:58
Я использую QT / PyQT на работе и люблю их использовать. Имейте в виду, что во время обучения они оба бесплатны, как в лицензии GPL с открытым исходным кодом, но как только вы начинаете продавать свою работу, вам необходимо приобретать лицензии на коммерческую разработку, по одной на разработчика.
user44484 12.12.2008 22:57:43
Разметка XML - это формат используемых файлов .ui. Они могут быть написаны от руки, или вы можете использовать Qt Designer для их создания.
gnud 12.12.2008 22:59:52
hasen: первая из трех ссылок содержит пример файла .ui: sector.ynet.sk/qt4-tutorial/tutorial/…
harms 12.12.2008 23:35:00
Кстати, обратите внимание, что третья ссылка на PyQt версии 3, так что она, вероятно, больше не применима на 100%.
harms 12.12.2008 23:37:04

окна?

Вы можете использовать редактор WinForms в Visual Studio, а затем поговорить со сборкой из IronPython.

-2
12.12.2008 22:23:33
Проголосовал, потому что это для Windows? Я не понимаю +1 к смещению.
orip 6.01.2009 13:50:27
Пониженное голосование, потому что «говорить со сборкой» не равно «пользовательскому интерфейсу на основе разметки», кроме того, даже если успешно утверждается, что он основан на разметке, основан на необычной «сборочной библиотеке» для Windows-IDE, он переносит те же проблемы, что и у OP с QT.
Arafangion 23.02.2009 02:11:45
Редактор winforms создает код. Особенно некрасивый код в некоторых случаях. Кроме того, IronPython является реализацией языка Python поверх среды выполнения .NET. Это означает, что вы потеряете много модулей CPython.
user93202 1.12.2009 13:56:55

Как насчет wxPython? Я только сейчас начинаю работать с ним, но есть инструмент - Редактор ресурсов XRC, который позволяет вам собирать графический интерфейс, который затем записывается в файл XML. Насколько я понимаю, ваше Python-приложение загружает XML-файл, вместо того чтобы смешивать весь код компоновки GUI с вашим Python-кодом.

2
12.12.2008 22:36:16
+1. Вероятно, лучший вариант для Python. Я предпочитаю этот подход предложенному мной. Руководство по файлам ресурсов XML: wiki.wxpython.org/UsingXmlResources
user93202 30.11.2009 07:19:28

Если вы используете GTK , вы можете использовать Glade , который является файлом XML.

1
12.12.2008 22:38:32

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

0
20.04.2009 15:09:56

Если вы выбираете язык, такой как Tcl или Python и Tk, для разработки приложений, то довольно просто написать собственный DSL для описания интерфейса. Например, вы можете написать DSL, который позволит вам создавать такие меню:

menubar {
    File => {
        Open => cmd.open
        Save => cmd.save
        Exit => cmd.exit
    }
    Edit => {
        Cut => cmd.cut
        Copy => cmd.copy
        Paste => cmd.paste
    }
}

... и ваши основные формы GUI, как это:

form PropertiesForm {
          Font: [fontchooser]
    Foreground: [foregroundChooser]
    Background: [backgroundChooser]
}
form NewUserForm {
    username [_____________________]
    [] administrator
    enable the following features:
    () feature 1
    () feature 2
    () feature 3
}
notebook {
   Properties => PropertiesForm
   New User => NewUserForm
}

... и так далее. Tcl действительно позволяет вам писать DSL как этот. Обратите внимание, что эта возможность сама по себе не встроена в Tcl, но язык делает DSL тривиальными. Некоторые вещи такого типа существуют в вики Tcler, например, есть код для создания меню, аналогичный тому, что я описал в Menus Made Easy .

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

2
20.04.2009 15:26:43