J'entame une série de billet avec pour thème la comparaison de différents langages de programmation moderne et de différentes bibliothèques graphiques. J'ai choisi de faire simple et, pour être un tant soit peu comparable, j'ai choisi de créer une fenêtre helloworld standard dans chacune des paires langage/librairie graphique. Juste une fenêtre et un bouton qui ferme la fenêtre. Le but étant de faire découvrir les B-A-Ba de la programmation d'une interface graphique avec les différentes approches à la fois des langages et des librairies. Au menu :

  • les langages python,java,c++
  • les librairies graphiques qt,gtk et swing. Je ferais des billets python/gtk, python/qt, java/swing, c++/qt, au moins, et certainement c++/gtk. Le premier de la série Helloworld est en python/Gtk.

La capture d'écran. helloworld py/gtk Attention elle a été faire sous kubuntu/KDE, elle n'aurait pas la même décoration et apparence sous ubuntu/GNOME. Le source :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pygtk # on importe les librairies grâce au module pygtk qui permet la communication entre python et gtk (qui est écrit dans un autre langage)
import gtk

class HelloWorld(gtk.Window): # remarquer la syntax python pour hériter d'une super-classe, ici gtk.Window qui est la classe de base des fenêtres en gtk
	def __init__(self):
		self = gtk.Window(gtk.WINDOW_TOPLEVEL) # appelle du constructeur de la super-classe
		self.set_title("Hello World !") # On choisit le titre de la fanêtre
		button = gtk.Button("Hello World !") # création d'un bouton
		button.connect("clicked", gtk.main_quit ) # connection de l'évènement du bouton clicked avec la fonction gtk.main_quit
		self.add( button) # on ajoute le bouton à la fenêtre
		self.connect("delete_event", gtk.main_quit ) # on "connecte" l'évènement de la fenêtre avec la même fonction
		self.show_all() # on affiche les composants
	def main(self):
		gtk.main()                 # pour pouvoir afficher des composants Gtk il est nécessaire de lancer cette fonction

if __name__ =="__main__": # équivalent du 'main' de java et c++
	hello = HelloWorld() # on  crée instance de l'objet HelloWorld - noter le typage dynamique de python
	hello.main() # lancement de l'interface

Plus aller plus loin, je vous recommande ces tutoriels :