GtkFr - Cours Gtk+-2

PyLesTables

PageAccueil :: LesNews :: Telechargement :: Liens :: Forum :: LeChat :: Contact
DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.90
<< Les box PyGtk Les entrées de saisie >>


Les Tables

1. Présentation

Dans la famille des containers, voilà sûrement le widget le plus intéressant. En effet il peut être parfois douloureux de placer correctement son interface avec l'utilisation de plusieurs GtkBox. Le widget GtkTable est conçu pour résoudre ce problème car il utilise une grille invisible pour attacher les widgets mais sans pour autant perdre la puissance de GTK+ avec le redimensionnement automatique.

1.1 Hiérarchie

GObject -> GtkObject -> GtkWidget -> GtkContainer -> GtkTable

2. Utilisation de base

Au moment de la création de la GtkTable, nous allons spécifier le nombre de lignes et de colonnes, puis y placer les éléments avec 3 principales caractéristiques :

2.1 Création d'une GtkTable

La classe à utiliser est :
table = gtk.Table(rows, columns, homogeneous)
Les paramètres rows et columns permettent de définir respectivement le nombre de lignes et de colonnes de la grille. Le paramètre homogeneous quant à lui définit, comme pour une GtkBox, si tous les widgets contenus dans la GtkTable utilisent un espace équivalent.

2.2 Insertion d'éléments

La première méthode étudiée est :
table.attach(child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
A première vue, cette méthode peut apparaître compliquée, mais elle est en réalité très simple. Le paramètre child représente le widget à attacher à la grille, les paramètres left_attach et right_attach, les positions à gauche et à droite du widget et les paramètres top_attach et bottom_attach, les positions supérieures et inférieures du widget.
Les paramètres xoptions et yoptions permettent de spécifier respectivement la façon dont le widget réagit horizontalement et verticalement au redimensionnement de la GtkTable. Ces paramètres peuvent prendre 3 valeurs (que l'on peut associer) :
Les deux derniers paramètres xpadding et ypadding définissent l'espace supplémentaire à ajouter aux bords du widget (à droite et à gauche pour le premier, au-dessus et en dessous pour le second).

La deuxième méthode est : FIXME: EST-CE DISPONIBLE DANS PYTHON ? => cette deuxième méthode est bien disponible mais déprécié.
table.attach_defaults(child, left_attach, right_attach, top_attach, bottom_attach)
Ceci est la version simplifiée de la première fonction car elle définit automatiquement les paramètres xoptions et yoptions à gtk.EXPAND | gtk.FILL et les paramètres xpadding et ypadding à 0.

2.3 Modification de la table

Il est possible de changer la taille de la grille après sa création à l'aide de cette méthode :
table.resize(rows, columns)
Les paramètres rows et columns sont les nouveaux nombres de lignes et de colonnes.
Ces deux méthodes permettent de changer l'espace d'une ligne ou d'une colonne spécifique :
table.set_row_spacing(row, spacing)
table.set_col_spacing(column, spacing)
La première définit l'espace autour d'une ligne tandis que la deuxième fait la même chose pour une colonne.
Celles-ci ont le même rôle que les deux précédentes méthodes, mais agissent sur l'ensemble de la GtkTable :
table.set_row_spacings(spacing)
table.set_col_spacings(spacing)
FIXME: A VOIR...
Et pour connaître ces espacements nous avons quatre méthodes différentes :
row = table.get_row_spacing()
column = table.get_col_spacing(column)
row = table.get_default_row_spacing()
column = table.get_default_col_spacing()
Les deux premières méthodes permettent de connaître l'espace entre ligne numéro row (ou la colonne numéro column) et sa suivante. Les deux autres méthodes quant à elles, renvoient la valeur par défaut des espacements, c'est à dire la valeur qui sera utilisé au prochain ajout d'un widget.

2.4 Programme exemple

Nous allons utiliser le même exemple que dans le chapitre sur les GtkBox, pour bien montrer la différence au niveau du code.
# -*- Encoding: Latin-1 -*-
import gtk

def main():
    boutons = []

    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_default_size(320, 200)
    window.set_title("Les GtkTable")
    window.connect("destroy", gtk.main_quit), None)

    # Creation et insertion de la table 3 lignes 2 colonnes
    table = gtk.Table(3,2,True)
    window.add(table)

    # Creation des boutons
    for i in range(4):
        boutons.append( gtk.Button("Bouton %d" % (i+1)) )

    # Insertion des boutons
    table.attach(boutons[0],  0, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND, 0, 0)
    table.attach_defaults(boutons[1], 0, 1, 1, 2)
    table.attach(boutons[2], 1, 2, 1, 2, gtk.EXPAND, gtk.EXPAND | gtk.FILL, 0, 0)
    table.attach_defaults(boutons[3], 0, 2, 2, 3)

    window.show_all()

    gtk.main()

if __name__ == '__main__':
    main()


<< Les box PyGtk Les entrées de saisie >>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]
Apinc