Графический интерфейс на основе разметки для python

StackOverflow https://stackoverflow.com/questions/364327

  •  21-08-2019
  •  | 
  •  

Вопрос

Я хочу заняться программированием серьезных приложений на основе графического интерфейса пользователя, но когда я смотрю на такие вещи, как Swing / SWT из Java, я не могу не НЕНАВИДЕТЬ программировать графический интерфейс, создавая объекты "widget", заполняя их и вызывая методы для них.

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

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

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

Обновить

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Если вы выберете для разработки приложений такой язык, как 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, например, там есть код для создания меню, похожего на то, что я описал в Меню стало проще.

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

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

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

Это XML, а не Python, но посмотрите на Открыть Ласло

окна?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top