), Я не уверен, что он на 100% совместим или останется таковым.

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

Графический интерфейс полностью описан в простом текстовом файле (код)код краткий (1 или 2 строки кода на пару виджет / событие), подходящий для сценариевСтруктура и работа графического интерфейса очевидна из кода (вложенность виджетов и поток событий)подробности окак для построения GUI скрыты (такие вещи, как mainloop, присоединение слушателей событий и т. д.)поддерживаются автоматические макеты (vboxes, hboxes и т. д.)

Как показывают ответы, это можно определить какдекларативный Программирование GUI, но это не обязательно так. Любой подход в порядке, если он работает, прост в использовании и лаконичен.

Есть несколько библиотек GUI / инструментарий, как это. Они перечислены ниже. Пожалуйста, расширите список, если вы видите, что соответствующий инструментарий отсутствует. Укажите, является ли проект кроссплатформенным, зрелым, активным, и, если возможно, приведите пример.

Пожалуйста, используйте эту вики для обсуждениятолько с открытым исходным кодом проекты.

Это список пока (в алфавитном порядке):

Fudgets

Fudgets библиотека Haskell Платформа: Unix. Статус: экспериментальный, но все еще поддерживается. Пример:

  import Fudgets
  main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))


(источник:picamatic.com)

GNUstep Renaissance

эпоха Возрождения позволяет описать GUI в простом XML. Платформы: OSX / GNUstep. Статус: часть GNUstep. Пример ниже:

<window title="Example">
  <vbox>
    <label font="big">
      Click the button below to quit the application
    </label>
    <button title="Quit" action="terminate:"/>
  </vbox>
</window> 


(источник:picamatic.com)

HTML

Основанный на HTML GUI (HTML + JS). Кроссплатформенный, зрелый. Может использоваться полностью на стороне клиента.

Ищите хороший пример «helloworld».


(источник:picamatic.com)

JavaFX

JavaFX может использоваться как для автономных (настольных) приложений, так и для веб-приложений. Не полностью кроссплатформенный, еще не полностью открытый исходный код. Статус: 1.0 релиз. Пример:

  Frame {
    content: Button {
      text: "Press Me"
      action: operation() {
         System.out.println("You pressed me");
      }
    }
    visible: true
  }

Скриншот нужен.

Phooey

Phooey это еще одна библиотека Haskell. Кроссплатформенность (wxWidgets), бэкэнд HTML + JS запланирован. Зрелый и активный. Пример (чуть больше, чем helloworld):

  ui1 :: UI ()
  ui1 = title "Shopping List" $
        do a <- title "apples"  $ islider (0,10) 3
           b <- title "bananas" $ islider (0,10) 7
           title "total" $ showDisplay (liftA2 (+) a b)


(источник:picamatic.com)

PythonCard

PythonCard описывает GUI в словаре Python. Кроссплатформенность (wxWidgets). Некоторые приложения используют его, но проект кажется остановленным. Есть активный форк.

Я пропускаюПример PythonCard потому что это слишком многословно для конкурса.


(источник:picamatic.com)

обувь

обувь для руби. Платформы: Win / OSX / GTK +. Статус: молодой, но активный. Минимальное приложение выглядит так:

  Shoes.app {
     @push = button "Push me"
     @note = para "Nothing pushed so far"
     @push.click {
        @note.replace "Aha! Click!"
     }
  }


(источник:picamatic.com)

Tcl / Tk

Tcl / Tk, Кроссплатформенность (собственный набор виджетов). Зрелый (возможно, даже от) и активный. Пример:

  #!/usr/bin/env wish
  button .hello -text "Hello, World!" -command { exit }
  pack .hello
  tkwait window .


(источник:picamatic.com)

tekUI

tekUI для Луа (и С). Платформы: X11, DirectFB. Статус: Альфа (можно использовать, но API все еще развивается). Пример:

  #/usr/bin/env lua
  ui = require "tek.ui"
  ui.Application:new {
    Children = {
      ui.Window:new  {
        Title = "Hello",
        Children = {
          ui.Text:new {
            Text = "_Hello, World!", Style = "button", Mode = "button",
          },
        },
      },
    },
  }:run()


(источник:picamatic.com)

Treethon

Treethon для Python. Описывает графический интерфейс в файле YAML (Питон в дереве YAML). Платформа: GTK +. Статус: работа в прогрессе. Простое приложение выглядит так:

  _import: gtk
  view: gtk.Window()
  add:
      - view: gtk.Button('Hello World')
        on clicked: print view.get_label()

Скриншот Treethon helloworld http://treethon.googlecode.com/svn/trunk/treethon_gtk_tutorial/base.png

Еще не названная библиотека Python Ричарда Джонса:

Этот еще не выпущен. Идея состоит в том, чтобы использовать контекстные менеджеры Python (with Ключевое слово) для структурирования кода GUI. ВидетьБлог Ричарда Джонса для деталей.

with gui.vertical:
    text = gui.label('hello!')
    items = gui.selection(['one', 'two', 'three'])
    with gui.button('click me!'):
        def on_click():
            text.value = items.value
            text.foreground = red
XUL

XUL + Javascript может использоваться для создания автономных настольных приложений с XULRunner, а также расширениями Mozilla. Зрелый, с открытым исходным кодом, кроссплатформенный.

  <?xml version="1.0"?>
  <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  <window id="main" title="My App" width="300" height="300"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <caption label="Hello World"/>
  </window>


(источник:picamatic.com)

Спасибо за вклад!

Ответы на вопрос(9)

Ваш ответ на вопрос