Les fenêtres
1. Présentation
Le widget
GtkWindow est l'élément de base d'une interface graphique, car c'est ce widget qui va vous permettre de créer la fenêtre principale ainsi que toutes les autres fenêtres de votre programme.
1.1 Hiérarchie
GObject ->
GtkObject ->
GtkWidget ->
GtkContainer ->
GtkBin? ->
GtkWindow
2. Utilisation de base
2.1 Création de la fenêtre
window = gtk.Window(type)
Le paramètre
type définit le type de la fenêtre en cours de création, et peut prendre une des deux valeurs suivantes :
- gtk.WINDOW_TOPLEVEL : pour créer une fenêtre complète avec une zone réservée dans la barre des tâches ;
- gtk.WINDOW_POPUP : pour créer une fenêtre sans aucune décoration (barre de titre, bordure, ...).
2.2 Titre de la fenêtre
Pour définir le titre d'une fenêtre une méthode spécifique est à notre disposition. Cette dernière est très simple d'utilisation :
window.set_title(title)
L'objet
window correspond au widget que nous venons de créer.
Le deuxième paramètre
title est bien entendu le titre que l'on veut donner à la fenêtre.
Au contraire, pour connaître le titre d'une fenêtre, la fonction est :
titre = window.get_title()
2.3 Taille de la fenêtre
La fonction pour définir la taille par défaut de la fenêtre est :
window.set_default_size(width, height)
Le paramètre
width est la largeur de la fenêtre tandis que le paramètre
height est sa hauteur.
Et très logiquement, la fonction pour connaître la taille par défaut de la fenêtre est :
width, height = window.get_default_size ()
2.4 Position de la fenêtre
La première fonction étudiée permet de définir la position de la fenêtre avant son affichage. Son prototype est le suivant :
window.set_position(position)
Le paramètre
position est la position que l'on veut donner à la fenêtre. Les valeurs acceptées sont :
- gtk.WIN_POS_NONE : la fenêtre aura une position aléatoire lors de son affichage ;
- gtk.WIN_POS_CENTER : la fenêtre sera centrée à l'écran ;
- gtk.WIN_POS_MOUSE : le coin supérieur droit de la fenêtre correspondra à la position de la souris au moment de l'affichage ;
- gtk.WIN_POS_CENTER_ALWAYS : la fenêtre sera centrée et ne pourra être déplacée ;
- gtk.WIN_POS_CENTER_ON_PARENT : la fenêtre sera centrée par rapport à la fenêtre parente.
La deuxième fonction est utilisable à tout moment du programme et permet de donner la position exacte de la fenêtre:
window.move(x, y)
Les deux paramètres sont la nouvelle position de la fenêtre. Le paramètre
x est la position suivant l'axe X (axe horizontal) et le paramètre
y, la position suivant l'axe Y (axe vertical).
À l'inverse, pour connaître la position de la fenêtre, il faut utiliser cette fonction :
x, y = window.get_position()
2.5 Affichage de la fenêtre
Le widget
GtkWindow, comme tous les autres widgets, n'a pas de méthodes particulières concernant son affichage. Pour cela il faut utiliser une méthode du widget de base
GtkWidget dont il hérite et qui est :
window.show()
Cependant cette méthode ne s'occupera d'afficher que la fenêtre et pas les widgets qui ont été ajoutés à l'intérieur de celle-ci. Pour simplifier les choses, Gtk+ nous offre cette méthode qui affichera tout d'un seul coup :
window.show_all()
Il en est de même en ce qui concerne la destruction d'un widget, qui se fait avec cette méthode :
window.destroy()
2.6 Programme exemple
Nous allons créer une fenêtre de taille 320x200, dont le titre sera "Chapitre Fenetre" et qui sera centrée à l'écran.
import gtk
def OnDestroy(widget, data):
# Arret de la boucle evenementielle
gtk.main_quit()
def main():
# Creation de la fenetre
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
# Definition de la position
window.set_position(gtk.WIN_POS_CENTER)
# Definition de la taille de la fenetre
window.set_default_size(320, 200)
# Titre de la fenetre
window.set_title("Chapitre Fenetre")
# Connexion du signal "destroy"
window.connect("destroy", OnDestroy, None)
# Affichage de la fenetre
window.show()
# Demarrage de la boucle evenementielle
gtk.main()
if __name__ == '__main__':
main()
Résultat
