Veuillez répertorier les bibliothèques de programmation GUI, les kits d’outils et les frameworks qui permettent d’écrire rapidement des applications GUI. Je veux dire de cette façon, que
Comme les réponses le suggèrent, cela peut être défini comme une programmation GUI déclarative , mais ce n’est pas nécessairement le cas. Toute approche est acceptable si elle fonctionne, est facile à utiliser et concise.
Il existe des bibliothèques / toolkits d’interface graphique comme celui-ci. Ils sont listés ci-dessous. Veuillez étendre la liste si vous voyez une boîte à outils qualifiante manquante. Indiquez si le projet est cross-plateforme, mature, actif et donnez un exemple si possible.
Veuillez utiliser ce wiki pour discuter uniquement des projets Open Source .
Voici la liste jusqu’à présent (par ordre alphabétique):
Fudgets est une bibliothèque Haskell. Plate-forme: Unix. Statut: expérimental, mais toujours maintenu. Un exemple:
import Fudgets main = fudlogue (shellF "Hello" (labelF "Hello, world!" >+< quitButtonF))
Fudgets example screenshot http://soffr.miximages.com/scripting/1883597_93x80.gif
Renaissance permet de décrire l’interface graphique en XML simple. Plateformes: OSX / GNUstep. Statut: partie de GNUstep. Un exemple ci-dessous:
Exemple de capture d’écran de Renaissance http://soffr.miximages.com/scripting/1884098_289x80.png
Interface graphique basée sur HTML (HTML + JS). Crossplatform, mature. Peut être utilisé entièrement du côté du client.
Vous cherchez un bel exemple de «helloworld».
Exemple d’interface graphique HTML: http://soffr.miximages.com/scripting/1883635_264x60.png
JavaFX est utilisable pour les applications autonomes (de bureau) ainsi que pour les applications Web. Pas complètement crossplatform, 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 }
Une capture d’écran est nécessaire
Phooey est une autre bibliothèque de Haskell. Crossplatform (wxWidgets), backend HTML + JS prévu. Mature et actif. Un exemple (un peu plus qu’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 (+) ab)
Phooey exemple capture d’écran http://soffr.miximages.com/scripting/1883543_236x187.png
PythonCard décrit l’interface graphique dans un dictionnaire Python. Plateforme croisée (wxWidgets). Certaines applications l’utilisent, mais le projet semble bloqué. Il y a une fourchette active.
Je saute l’ exemple de PythonCard car il est trop verbeux pour le concours.
Exemple de PythonCard screenshot http://soffr.miximages.com/scripting/1883646_199x99.gif
Chaussures pour Ruby. Plateformes: Win / OSX / GTK +. Statut: Jeune mais actif. Une application minimale ressemble à ceci:
Shoes.app { @push = button "Push me" @note = para "Nothing pushed so far" @push.click { @note.replace "Aha! Click!" } }
Exemple de chaussures capture d’écran http://soffr.miximages.com/scripting/1884011_227x71.png
Tcl / Tk . Crossplatform (son propre ensemble de widgets). Mature (probablement même daté) et actif. Un exemple:
#!/usr/bin/env wish button .hello -text "Hello, World!" -command { exit } pack .hello tkwait window .
Exemple d’écran Tcl / Tk http://soffr.miximages.com/scripting/1883672_111x58.png
tekUI pour Lua (et C). Plateformes: 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()
tekUI helloworld capture d’écran http://soffr.miximages.com/scripting/1883821_290x55.png
Treethon pour Python. Il décrit l’interface graphique dans un fichier YAML ( Python dans un arbre YAML ). Plate-forme: GTK +. Statut: travail en cours. Une application simple ressemble à ceci:
_import: gtk view: gtk.Window() add: - view: gtk.Button('Hello World') on clicked: print view.get_label()
Treethon helloworld capture d’écran http://treethon.googlecode.com/svn/trunk/treethon_gtk_tutorial/base.png
Celui-ci n’est pas encore sorti. L’idée est d’utiliser les gestionnaires de contexte Python ( with
mot clé) pour structurer le code GUI. Voir le blog de Richard Jones 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 + Javascript peut être utilisé pour créer des applications de bureau autonomes avec XULRunner ainsi que des extensions Mozilla. Maturité, open source, plateforme croisée.
XUL helloworld example http://soffr.miximages.com/scripting/1884209_228x108.png
Merci pour vos consortingbutions!
Pas pour enfant, mais HTML.
C’est multi-plateforme, et résume la présentation graphique dans un simple fichier texte. C’est définitivement mature, bien compris et bien documenté.
Il existe de nombreuses façons de modéliser des fichiers HTML pour obtenir du contenu dynamic, ainsi que d’autres moyens de convertir des syntaxes personnalisées en HTML si vous n’aimez pas les crochets.
Scripting côté client avec Javascript, scripting côté serveur avec PHP / Ruby / Python / Perl.
Ce n’est pas bien adapté à toutes les fins, mais pour beaucoup, c’est assez bon. Il n’y a aucune raison de le servir non plus – vous pouvez dissortingbuer un fichier HTML à vos clients si vous le souhaitez – voir TiddlyWiki pour un bon exemple de ce que cela peut donner.
Ce que vous décrivez, à l’exception des chaussures, c’est la notion nouvelle de programmation déclarative. Je décrirais les chaussures davantage comme un langage de domaine spécifique à une interface graphique. Eh bien, je dis new-fangled: les formulaires Visual Basic, si vous regardiez derrière le concepteur IDE, étaient déclaratifs. Donc, plus loin encore, se trouvaient les SQL * Forms d’Oracle, bien que leur assemblage avec un éditeur de texte soit un processus que seuls les plus courageux pouvaient entreprendre.
Pour append un autre à la liste, Microsoft a XAML qui, entre autres choses, décrit les interfaces graphiques créées pour le WPF .
Bien que certains des schémas mentionnés soient assez simples, les interfaces graphiques définies de manière déclarative peuvent être aussi complexes que tout ce qui est défini dans le code, elles sont simplement plus faciles et plus rapides: elles permettent de gérer le cadre sous-jacent le “comment”
TCL / TK est un langage de script utilisé pour créer une interface graphique de manière interactive. Il est disponible sur différentes plates-formes, notamment Unix, Windows et Mac OS X.
Pyjamas – http://pyjs.org – c’est un ensemble de widgets de bureau, déguisé en un ensemble de widget Web 2.0 basé sur AJAX. c’est tellement pas comme un jeu de widget web que je l’ai porté sur le bureau – http://pyjd.org – en utilisant webkit (le même moteur dans Adobe AIR, Google Chrome, Safari, etc.)
c’est “bonjour le monde”:
à partir de pyjamas.ui.RootPanel importation RootPanel à partir du bouton pyjamas.ui.Button import de pyjamas import fenêtre def greet (fred): Window.alert ("Bonjour, AJAX!") si __name__ == '__main__': b = Bouton ("Cliquez moi", salue) RootPanel (). Add (b)
cela répond immédiatement aux quatre premières exigences sur cinq. l’exigence 5 est remplie par ceci:
à partir de pyjamas.ui.RootPanel importation RootPanel à partir de pyjamas.ui.HorizontalPanel import HorizontalPanel à partir de pyjamas.ui.HTML import HTML p = HorizontalPanel () p.add (HTML (" Bonjour b>")) p.add (HTML ("Monde")) RootPanel (). Add (p)
ça ne pouvait pas être plus simple.
XUL (c’est assez facile à utiliser et puissant – une grande partie de Firefox est implémentée en utilisant XUL pour la structure de l’interface graphique, + javascript pour la gestion de la logique)
Le tutoriel XUL a quelques bons exemples. En voici un pour les tabboxes . Celui au bas de la page comporte des tabs, des boutons, des zones d’édition et des zones de groupe commutables, et c’est assez simple (pas de liaison Javascript / CSS / XBL / / etc). Ils ajoutent ensuite de plus en plus de choses plus tard, ce qui représente beaucoup de fonctionnalités pour la longueur du fichier qui le spécifie. (au moins jusqu’à ce que vous commenciez à append du javascript pour gérer la logique en question) Si je devais faire quelque chose comme ça dans Win32, ce serait très difficile.
wxLua est une enveloppe de la bibliothèque wxWidgets pour Lua. Il utilise une méthode Connect pour attacher des événements de widget d’interface graphique à des fonctions (les fonctions sont de première classe comme dans JS).
GTK-server est extrêmement simple à utiliser et peut être utilisé dans plus de 30 langues, y compris Bash et Visual Basic.
SDL / Swing est extrêmement concis, lisible, discret (283k lib sans dépendances) et facile à utiliser. Exemple:
menus { "File" { "Open" do="open" // calls "open()" in the controller "---" "Exit" do="exit" } }
Son open source mais bénéficie du support commercial de Ikayzo.com. Les ports pour .NET et iOS sont en cours.
Je suis tombé sur SDL / Swing aujourd’hui.
Vous devriez jeter un oeil à XAML si vous êtes sur la plate-forme .NET