GUI アプリをすばやく作成できる GUI プログラミング ライブラリ、ツールキット、フレームワークを挙げてください。そういう意味では、
- GUI は、人間が読める (および人間が書き込める) プレーン テキスト ファイル (コード) で完全に記述されています。
- コードは簡潔で (ウィジェット/イベントのペアごとに 1 行または 2 行のコード)、スクリプト作成に適しています
- GUI の構造と操作はコードから明らかです (ウィジェットのネストとイベントの流れ)
- GUI の構築方法に関する詳細は隠されています (メインループ、イベント リスナーのアタッチなど)。
- 自動レイアウトがサポートされています (vbox、hbox など)。
回答が示唆するように、これは宣言型GUI プログラミングとして定義される場合がありますが、必ずしもそうであるとは限りません。機能し、使いやすく、簡潔であれば、どのようなアプローチでも問題ありません。
このような GUI ライブラリ/ツールキットがいくつかあります。それらは以下にリストされています。適切なツールキットが見つからない場合は、リストを拡張してください。プロジェクトがクロスプラットフォームで、成熟しており、アクティブであるかどうかを示し、可能であれば例を挙げてください。
この wiki は、オープン ソースプロジェクトについてのみ議論するために使用してください。
これはこれまでのリストです(アルファベット順):
ファジェット
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は、スタンドアロン (デスクトップ) アプリだけでなく Web アプリケーションにも使用できます。完全なクロスプラットフォームではなく、まだ完全なオープン ソースでもありません。ステータス: 1.0 リリース。例:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
スクリーンショットが必要です。
フーイ
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 )
Pythonカード
PythonCardは Python 辞書で GUI を記述します。クロスプラットフォーム (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
Lua (および C) の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 )
ツリーソン
Python のツリーソン。GUI を YAML ファイル ( YAML ツリー内の Python ) で記述します。プラットフォーム: GTK+。ステータス: 進行中の作業。シンプルなアプリは次のようになります。
_import: gtk
view: gtk.Window()
add:
- view: gtk.Button('Hello World')
on clicked: print view.get_label()
Richard Jones によるまだ名前のない Python ライブラリ:
こちらはまだ発売されていません。アイデアは、Python コンテキスト マネージャー (with
キーワード) を使用して GUI コードを構造化することです。詳細については、 Richard Jones のブログを参照してください。
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 )
貢献していただきありがとうございます!