Veuillez IHM de la liste des bibliothèques de programmation, des outils, des cadres qui permettent d'écrire des applications à interface graphique rapidement. Je veux dire d'une façon telle, que
- GUI est décrit entièrement dans un lisible par l'homme (et de l'homme-les droits d'écriture) fichier texte (code)
- le code est laconique (1 ou 2 lignes de code par widget/paire événement), adapté pour l'écriture de scripts
- la structure et le fonctionnement de l'interface graphique est évident à partir du code (nidification de widgets et de flux d'événements)
- les détails sur la façon de construire l'interface graphique sont cachés (des choses comme mainloop, fixation des écouteurs d'événement, etc.)
- auto-des dispositions sont prises en charge (vboxes, hboxes, etc.)
Les réponses suggèrent, ce qui peut être défini comme déclarative de la programmation GUI, mais il ne l'est pas nécessairement. Toute démarche est OK si ça fonctionne, il est facile à utiliser et laconique.
Il y a quelques bibliothèques GUI/boîtes à outils de ce genre. Ils sont énumérés ci-dessous. Veuillez compléter la liste si vous voyez une qualification trousse à outils manquants. Indiquer si le projet est compatible, mature, actif, et de donner un exemple si possible.
Veuillez utiliser ce wiki afin de discuter seul Open Source de des projets.
C'est la liste (par ordre alphabétique):
Fudgets
Fudgets est une bibliothèque Haskell. Plateforme: Unix. Statut: Expérimental, mais toujours maintenu. Un exemple:
import Fudgets
main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
GNUstep De La Renaissance
De la Renaissance permet de décrire une interface en XML simple. Plates-formes: mac OS x/GNUstep. Statut: partie de GNUstep. Un exemple ci-dessous:
<window title="Example">
<vbox>
<label font="big">
Click the button below to quit the application
</label>
<button title="Quit" action="terminate:"/>
</vbox>
</window>
HTML
HTML interface utilisateur graphique (HTML + JS). Multi plates-formes, mature. Peut être utilisé entièrement sur le côté client.
La recherche d'une belle "helloworld" exemple.
JavaFX
JavaFX est utilisable en mode autonome (bureau) applications ainsi que pour les applications web. Pas complètement compatible, pas encore complètement open source. Statut: version 1.0. Un exemple:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
Capture d'écran est nécessaire.
Phooey
Phooey est une autre bibliothèque Haskell. Multi plates-formes (wxWidgets), HTML+JS backend prévu. Mature et active. Un exemple (un peu plus d'un 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)
PythonCard
PythonCard décrit GUI en Python dictionnaire. Multi plates-formes (wxWidgets). Certaines applications de l'utiliser, mais le projet semble dans l'impasse. Il est un membre actif de la fourche.
- Je me passer de PythonCard exemple parce qu'il est trop verbeux pour le concours.
Chaussures
Chaussures pour Ruby. Plates-formes: Win/OSX/GTK+. Statut: Jeunes, mais actif. Un minimum d'application ressemble à ceci:
Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click {
@note.replace "Aha! Click!"
}
}
Tcl/Tk
Tcl/Tk. Multi plates-formes (de son propre widget). Mature (probablement la même date) et active. Un exemple:
#!/usr/bin/env wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
tkwait window .
tekUI
tekUI pour Lua (et C). Plates-Formes: X11, DirectFB. Statut: Alpha (utilisable, mais l'API évolue toujours). Un exemple:
#/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()
Treethon
Treethon pour Python. Il décrit l'interface graphique dans un fichier YAML (Python dans un fichier YAML arbre). Plate-forme: GTK+. État d'avancement: travaux en proress. Une application simple ressemble à ceci:
_import: gtk
view: gtk.Window()
add:
- view: gtk.Button('Hello World')
on clicked: print view.get_label()
Encore sans nom bibliothèque Python par Richard Jones:
Cette dernière n'est pas encore sorti. L'idée est d'utiliser Python contexte cadres (with
mot-clé) pour structurer le code de la GUI. Voir Richard Jones blog pour plus de détails.
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 peut être utilisé pour créer autonome des applications de bureau avec XULRunner ainsi que des extensions de Mozilla. Mature, open source, multi plates-formes.
<?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>
Merci pour votre contribution!