GUIアプリを書くことができるGUIプログラミングライブラリ、ツールキット、フレームワークをリストしてくださいすばやく。そういう意味で
回答が示唆するように、これはdeclarativeGUIプログラミングとして定義できますが、必ずしもそうであるとは限りません。それが機能し、使いやすく簡潔な方法であれば、どのような方法でもかまいません。
このようなGUIライブラリ/ツールキットがいくつかあります。それらを以下に示します。正規のツールキットがない場合は、リストを拡張してください。プロジェクトがクロスプラットフォームで、成熟していてアクティブであるかどうかを示し、可能であれば例を示します。
このwikiを使用して、オープンソースプロジェクトのみについて議論してください。
これはこれまでのリスト(アルファベット順)です。
Fudgets はHaskellライブラリです。プラットフォーム:Unix。ステータス:実験的ですが、維持されています。例:
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
(ソース: picamatic.com )
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ベースのGUI(HTML + JS)。クロスプラットフォーム、成熟。完全にクライアント側で使用できます。
素敵な「helloworld」の例を探しています。
(ソース: picamatic.com )
JavaFX は、スタンドアロン(デスクトップ)アプリだけでなく、Webアプリケーションにも使用できます。完全にクロスプラットフォームではなく、まだ完全にオープンソースではありません。ステータス:1.0リリース。例:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
スクリーンショットが必要です。
Phooey はもう1つの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 )
靴 Rubyの場合。プラットフォーム: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 Lua(およびC)の場合。プラットフォーム: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ファイルでGUIを記述します(Pythonの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コンテキストマネージャ(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 [〜#〜] + 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 )
貢献してくれてありがとう!
子供ではなく、HTML。
これはクロスプラットフォームで、GUIレイアウトを単純なテキストファイルにまとめています。それは間違いなく成熟しており、よく理解され、十分に文書化されています。
動的コンテンツのHTMLファイルをテンプレート化する方法はたくさんありますが、山括弧が嫌いな場合にカスタム構文をHTMLに変換する方法は他にもあります。
Javascriptを使用したクライアント側スクリプト、PHP/Ruby/Python/Perlを使用したサーバー側スクリプト。
すべての目的に適しているわけではありませんが、多くの場合、それで十分です。それが提供される必要がある理由もありません-あなたが望むならあなたはあなたのクライアントにHTMLファイルを配布することができます-それが行くことができる良い例については TiddlyWiki を見てください。
あなたが説明しているのは、靴を除いて、宣言型プログラミングの新しくできた概念です。私は靴をGUIとしてより詳しく説明します ドメイン固有の言語 。 IDEデザイナの後ろを見ると、Visual Basicフォームは宣言型でした。したがって、さらに前に戻ると、OracleのSQL * Formsがありましたが、テキストエディターは、非常に勇敢な人によってのみ行われるプロセスでした。
リストに別のものを追加するために、Microsoftは [〜#〜] xaml [〜#〜] を持っています。これは、とりわけ、 [〜#〜] wpf [〜 #〜] 。
言及されているスキームの一部はかなり単純ですが、宣言的に定義されたGUIはコードで定義されたものと同じくらい複雑になる可能性がありますが、それらはより簡単で簡潔です。 「方法」。
TCL/TK は、GUIを対話的に構築するために使用されるスクリプト言語です。 Unix、Windows、Mac OS Xなどのさまざまなプラットフォームで利用できます。
パジャマ- http://pyjs.org -AJAXベースのWeb 2.0ウィジェットセットを装ったデスクトップウィジェットセットです。それは私が実際にそれをに移植したWebウィジェットセットのようではないデスクトップ- http: //pyjd.org -Webkitを使用(Adobe AIR、Google Chrome、Safariなどの同じエンジン)
これは「hello world」です。
from pyjamas.ui.RootPanel import RootPanel from pyjamas.ui.Button import Button from pajamas import Window def greet(fred) : Window.alert( "Hello、AJAX!") if __ == '__main __': b = Button( "Click me"、greet ) RootPanel()。add(b)
これは、5つの要件のうち最初の4つにすぐに答えます。これにより、要件5が満たされます。
from pyjamas.ui.RootPanel import RootPanel from pyjamas.ui.HorizontalPanel import HorizontalPanel from pyjamas.ui.HTML import HTML p = HorizontalPanel() p.add(HTML( "<b> Hello </ b>")) p.add(HTML( "World")) RootPanel( ).add(p)
それはもっと簡単なことはありません。
wxLua は、LuaのwxWidgetsライブラリのラッパーです。 Connectメソッドを使用して、GUIウィジェットイベントを関数にアタッチします(関数はJSのようなファーストクラスです)。
GTK-server は非常に使いやすく、BashやVisual Basicを含む30以上の言語から使用できます。
[〜#〜] xul [〜#〜] (非常に使いやすく、強力です-Firefoxの多くはGUI構造にXULを使用して実装されており、+ロジック処理にJavaScriptを使用しています)
XULチュートリアル には、いくつかの良い例があります。 tabboxes の例を示します。ページの下部にあるものには、切り替え可能なタブ、ボタン、編集ボックス、およびグループボックスがあり、かなり単純です(JavaScript/CSS/XBL /キーバインディングなどはありません)。次に、 progressivelymorestuff を後で追加します。これは、指定するファイルの長さに対して多くの機能です。 (少なくとも、問題のロジックを処理するためにJavaScriptを追加し始めるまで)Win32でこのようなことをしなければならなかった場合、それは本当の苦痛でしょう。
SDL/Swing は非常に簡潔で、読みやすく、邪魔にならず(283k libで依存関係なし)、使いやすいです。例:
menus {
"File" {
"Open" do="open" // calls "open()" in the controller
"---"
"Exit" do="exit"
}
}
オープンソースですが、Ikayzo.comからの商用サポートを楽しんでいます。 .NETとiOSの移植が進行中です。
今日出会ったのは SDL/Swing です。