60 votes

«Frameworks» de programmation d'interface graphique très simples, concis et faciles

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

Fudgets example screenshot

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> 

Renaissance example screenshot

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.

HTML GUI example

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)

Phooey example screenshot

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.

PythonCard example screenshot

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

Shoes example screenshot

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 .

Tcl/Tk example screenshot

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()

tekUI helloworld screenshot

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()

Treethon helloworld screenshot

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>

XUL helloworld example


Merci pour votre contribution!

16voto

rampion Points 38697

Pas d'enfant, mais HTML.

Il est multi-plateforme, et résume l'interface graphique-mise en page dans un simple fichier texte. C'est vraiment mature, bien compris et bien documenté.

Il y a un tas de façons de modèle fichiers HTML pour le contenu dynamique, et d'autres façons de convertir personnalisé syntaxes HTML si vous n'aimez pas l'angle entre parenthèses.

Les scripts côté Client w/ Javascript, scripts côté serveur avec PHP/Ruby/Python/Perl.

Ce n'est pas bien adapté pour toutes les fins, mais pour beaucoup, il est assez bon. Il n'y a pas de raison qu'il doit être servi - vous pouvez distribuer un fichier HTML à vos clients si vous voulez - voir TiddlyWiki pour un bon exemple d'où cela peut aller.

7voto

Mike Woodhouse Points 27748

Ce que vous décrivez est, à l'exception des chaussures, de la un nouveau genre notion de programmation déclarative. Je décrirais chaussures plus comme une interface graphique d' un Domaine Précis de la Langue. Eh bien, dis-je d'un nouveau genre: des formulaires Visual Basic, si vous avez regardé derrière l'IDE designer, ont été déclarative. Donc, en allant plus loin encore, étaient Oracle SQL*Forms, bien que l'assemblage avec un éditeur de texte est un processus seulement être entrepris par le très les plus courageux.

Pour ajouter un autre à la liste, Microsoft ont XAML qui, entre autres choses, décrit les Interfaces graphiques construits pour le WPF.

Bien que certains des régimes mentionnés sont assez simples, de manière déclarative défini par l'Ihm peut être aussi complexe que rien défini dans le code, ils sont tout simplement plus facile et terser: ils disent "ce que" vous voulez arriver et le laisser à l'infrastructure sous-jacente pour gérer le "comment".

7voto

OscarRyz Points 82553

Java Swin ...

Oh, tu as dit

Très simple, concis et facile

Ça ne fait rien.

6voto

mouviciel Points 36624

TCL / TK est un langage de script utilisé pour créer une interface graphique interactive. Il est disponible sur diverses plates-formes, notamment Unix, Windows et Mac OS X.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X