web-dev-qa-db-fra.com

Programmation très simple, TERSE et EASY GUI "Craignements"

Veuillez énumérer des bibliothèques de programmation GUI, des outils à outils, des frameworks qui permettent d'écrire des applications d'interface graphique rapidement. Je veux dire de telle manière que

  • L'interface graphique est entièrement décrite dans un fichier texte ordinaire lisible par l'homme (et l'hommage) (code)
  • le code est TERSE (1 ou 2 lignes de code par widget/paire d'événements), adapté aux scripts
  • la structure et le fonctionnement de l'interface graphique sont évidents du code (niché de widgets et de flux d'événements)
  • détails sur Comment ​​pour construire l'interface graphique est cachée (des choses comme Mainloop, attachent des auditeurs d'événements, etc.)
  • les aménagements automatiques sont supportés (Vbox, Hoxes, etc.)

Comme les réponses suggèrent, cela peut être défini comme déclaratif programmation d'interface graphique, mais ce n'est pas nécessairement tel. Toute approche est correcte si cela fonctionne, est facile à utiliser et au calcul.

Il y a quelques bibliothèques d'interface graphique/boîte à outils comme celle-ci. Ils sont énumérés ci-dessous. Veuillez étendre la liste si vous voyez une boîte à outils de qualification manquante. Indiquez si le projet est crossplateform, mature, actif et donner un exemple si possible.

Veuillez utiliser ce wiki pour discuter Seulement open source Projets.

Ceci est la liste jusqu'à présent (dans l'ordre alphabétique):

Fudgets

Fudgets est une bibliothèque de 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
(Source: Picamatic.com )

Gnustep Renaissance

Renaissance permet de décrire une interface graphique en XML simple. Plateformes: OSX/GNUSTEP. Statut: une 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> 

Renaissance example screenshot
(Source: Picamatic.com )

Html

GUI basé sur HTML (HTML + JS). Crossplatform, mature. Peut être utilisé entièrement sur le côté du client.

Vous recherchez un bel exemple "helloworld".

HTML GUI example
(Source: Picamatic.com )

Javafx

Javafx est utilisable pour les applications autonomes (Desktop) ainsi que pour les applications Web. Pas complètement crossplateform, pas encore complètement ouvert source. Statut: 1.0 Libération. Un exemple:

  Frame {
    content: Button {
      text: "Press Me"
      action: operation() {
         System.out.println("You pressed me");
      }
    }
    visible: true
  }

Screenshot est nécessaire.

Phooey

Phooey est une autre bibliothèque de haskell. Crossplatform (WxWidgets), HTML + JS Backend prévu. Mature et active. 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 (+) a b)

Phooey example screenshot
(Source: Picamatic.com )

Pythoncard

Pythoncard décrit une interface graphique dans A Python Dictionary. Crossplatform (WxWidgets). Certaines applications l'utilisent, mais le projet semble calé. Il y a une fourchette active.

I Skip exemple PythonCard car il est trop verbeux pour le concours.

PythonCard example screenshot
(Source: Picamatic.com )

Des chaussures

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!"
     }
  }

Shoes example screenshot
(Source: Picamatic.com )

Tcl/tk

TCL/TK . CrossPlateform (son propre ensemble de widget). Mature (probablement même datée) et active. Un exemple:

  #!/usr/bin/env wish
  button .hello -text "Hello, World!" -command { exit }
  pack .hello
  tkwait window .

Tcl/Tk example screenshot
(Source: Picamatic.com )

tekui

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 screenshot
(Source: Picamatic.com )

Treethon

Treethon pour Python. Il décrit une interface graphique dans un fichier YAML (Python dans un arbre Yaml). Plateforme: GTK +. Statut: Travailler dans la prororée. Une application simple ressemble à ceci:

  _import: gtk
  view: gtk.Window()
  add:
      - view: gtk.Button('Hello World')
        on clicked: print view.get_label()

Capture d'écran Treethon Helloworld http://trethon.googlecode.com/svn/trunk/treethon_gtk_tatutorial/base.png =

Pourtant Sans nom Python Bibliothèque de Richard Jones:

Celui-ci n'est pas encore libéré. L'idée est d'utiliser Python cadres de contexte (with mot-clé) pour structurer le code de l'interface graphique. Voir 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

[~ # ~] xul [~ # ~ ~] + JavaScript peut être utilisé pour créer des applications de bureau autonomes avec Xulrunner ainsi que Mozilla Extensions. Mature, open source, croisée croisée.

  <?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>

XUL helloworld example
(Source: Picamatic.com )


Merci de vos contributions!

60
sastanin

Pas à enfant, mais html.

C'est une plate-forme inter-plate-forme et résume la disposition de l'interface graphique dans un fil de texte simple. C'est définitivement mature, ainsi que bien compris et bien documentée.

Il existe un tas de façons de modèles de fichiers HTML pour un contenu dynamique et d'autres moyens de convertir des syntaxes personnalisées en HTML si vous n'aimez pas les crochets.

Script de côté client avec javascript, script de 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 que cela doit être servi soit - vous pouvez distribuer un fichier HTML à vos clients si vous le souhaitez - voir TIDDLYWIKI pour un bon exemple de votre choix.

16
rampion

Ce que vous décrivez, c'est, à l'exception des chaussures, la notion neuve de programmation déclarative. Je décrirais des chaussures plus comme une interface graphique langage de domaine spécifique . Eh bien, je dis que les formulaires de base visuels, si vous avez regardé derrière le IDE Designer, étions déclaratifs. Donc, aller plus loin, les formes SQL * d'Oracle sont-elles, bien que les assemblées avec un L'éditeur de texte était un processus seulement à entreprendre par les très courageux.

Pour ajouter une autre à la liste, Microsoft a XAML qui décrit entre autres choses conçues des gites construits pour le [~ # ~] WPF [~ ~ # ~] .

Bien que certains des régimes mentionnés soient assez simples, des GIV définies par des déclarations peuvent être aussi complexes que tout défini dans le code, ils sont tout simplement plus faciles et ersers: ils disent "de quoi" vous voulez arriver et de laisser le cadre sous-jacent à gérer le "comment".

7
Mike Woodhouse

TCL/TK est une langue de script utilisée pour la construction de gui-guignoires de manière interactive. Il est disponible sur différentes plates-formes, notamment UNIX, Windows et Mac OS X.

6
mouviciel

Pajamas - http://pyjs.org - C'est un ensemble de widget de bureau, déguisé en tant que jeu Widget Web 2.0 basé sur AJAX. C'est tellement tellement pas comme un jeu de widget Web que je me suis effectivement porté à le bureau - http://pyjd.org - Utilisation de WebKit (le même moteur dans Adobe Air, Google Chrome, Safari, etc.)

c'est "Hello World":

[ : 
 Window.alert ("Bonjour, Ajax!") [.____] [.____] 
 Si __ == '__' __ '__': 
 B = bouton ("Cliquez-moi" ) 
 RootPanel (). Ajouter (b) 

cela répond immédiatement aux quatre premières exigences sur cinq. Exigence 5 est remplie par ceci:

( = Horizontalpanel () 
 P.Ajouter (HTML ("<B> Hello </ B>"))) [.____] P.Ajouter (HTML ("World")) [.____] ) .Ajouter (p) 

il ne pouvait pas obtenir de plus simple.

3
lkcl

GTK-Server est extrêmement simple à utiliser et peut être utilisé à partir de plus de 30 langues, y compris Bash et Visual Basic.

2
Jakob Eriksson

[~ # ~] xul [~ # ~ ~] (C'est assez facile à utiliser, et puissant - une grande partie de Firefox est implémentée à l'aide de XUL pour la structure de l'interface graphique, + JavaScript pour la manipulation logique)

Le XUL Tutorial a quelques bons exemples. Voici un pour tabbox . Celui au bas de la page contient des onglets commutables, des boutons, des zones d'édition et des boîtes de groupe, et il est assez simple (pas de liaison JavaScript/CSS/XBL/CLÉ/etc.). Ils ajoutent ensuite progressivementplusStuff Plus tard, ce qui est beaucoup de fonctionnalité pour la longueur du fichier qui le spécifie. (au moins jusqu'à ce que vous commenciez à ajouter JavaScript pour gérer la logique en question) Si je devais faire quelque chose comme ça dans Win32, ce serait une vraie douleur.

2
Jason S

Je viens de tomber SDL/Swing aujourd'hui.

1
Digikata