), Я не уверен, что он на 100% совместим или останется таковым.
уйста, перечислите библиотеки программирования GUI, инструментарий, фреймворки, которые позволяют писать приложения GUIбыстро, Я имею в виду, что
Графический интерфейс полностью описан в простом текстовом файле (код)код краткий (1 или 2 строки кода на пару виджет / событие), подходящий для сценариевСтруктура и работа графического интерфейса очевидна из кода (вложенность виджетов и поток событий)подробности окак для построения GUI скрыты (такие вещи, как mainloop, присоединение слушателей событий и т. д.)поддерживаются автоматические макеты (vboxes, hboxes и т. д.)Как показывают ответы, это можно определить какдекларативный Программирование GUI, но это не обязательно так. Любой подход в порядке, если он работает, прост в использовании и лаконичен.
Есть несколько библиотек GUI / инструментарий, как это. Они перечислены ниже. Пожалуйста, расширите список, если вы видите, что соответствующий инструментарий отсутствует. Укажите, является ли проект кроссплатформенным, зрелым, активным, и, если возможно, приведите пример.
Пожалуйста, используйте эту вики для обсуждениятолько с открытым исходным кодом проекты.
Это список пока (в алфавитном порядке):
FudgetsFudgets библиотека Haskell Платформа: Unix. Статус: экспериментальный, но все еще поддерживается. Пример:
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
(источник:picamatic.com)
эпоха Возрождения позволяет описать 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 GUI (HTML + JS). Кроссплатформенный, зрелый. Может использоваться полностью на стороне клиента.
Ищите хороший пример «helloworld».
(источник:picamatic.com)
JavaFX может использоваться как для автономных (настольных) приложений, так и для веб-приложений. Не полностью кроссплатформенный, еще не полностью открытый исходный код. Статус: 1.0 релиз. Пример:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
Скриншот нужен.
PhooeyPhooey это еще одна библиотека 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 описывает 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, Кроссплатформенность (собственный набор виджетов). Зрелый (возможно, даже от) и активный. Пример:
#!/usr/bin/env wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
tkwait window .
(источник:picamatic.com)
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 для 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
XULXUL + 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)
Спасибо за вклад!