Основанный на разметке графический интерфейс для Python - PullRequest
7 голосов
/ 13 декабря 2008

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

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

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

Я ищу библиотеку Python (или даже проект WIP) для создания графического интерфейса.

UPDATE

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

Ответы [ 8 ]

7 голосов
/ 20 апреля 2009

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

Смотрите этот проект: pyxpcomext

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

3 голосов
/ 13 декабря 2008

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

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

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

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

2 голосов
/ 20 апреля 2009

Если вы выбираете язык, такой как 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
    }
}

... и ваш основной графический интерфейс выглядит так:

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 голосов
/ 13 декабря 2008

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

1 голос
/ 13 декабря 2008

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

0 голосов
/ 20 апреля 2009

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

0 голосов
/ 13 декабря 2008

Windows

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

0 голосов
/ 13 декабря 2008

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

...