GtkFr - Cours Gtk+-2

PyLesBoutonsPartieUn

PageAccueil :: LesNews :: Telechargement :: Liens :: Forum :: LeChat :: Contact
DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.90
<< Les labels PyGtk Les box >>


Les Boutons (Partie 1)

1. Présentation

Nous allons cette fois nous intéresser à un élément essentiel d'une interface graphique : le bouton. En effet celui-ci permet à l'utilisateur d'effectuer une action grâce à un simple click de souris. GTK+ nous permet de les utiliser grâce au widget GtkButton :

1.1 Hiérarchie

GObject -> GtkObject -> GtkWidget -> GtkContainer -> GtkBin? -> GtkButton

2. Utilisation de base

2.1 Création d'un bouton

bouton = gtk.Button(label=None, stock=None, use_underline=True)

Si on ne passe eucun paramètre, on créé un bouton vide. Cela permet de personnaliser complètement le bouton car GtkButton dérive de GtkContainer. On peut donc inclure n'importe quel type de widget dans le bouton (GtkLabel, GtkImage, ...).
Le paramètre label correspond au texte à afficher à l'intérieur du bouton. Comme pour le widget GtkLabel, si un caractère accentué est utilisé, il faudra fournir une chaine de caractères unicode pour avoir un affichage correct du texte.
Il est possible de faire réagir le bouton à l'aide d'un raccourci clavier. La touche servant de raccourci est spécifiée dans le paramètre label. Il suffit de mettre "_" devant la lettre souhaitée pour que la combinaison Atl+Touche active le bouton. Pour que ceci fonctionne, le paramètre use_underline doit être True (valeur par défaut).
Il est également possible de créer un bouton avec un label, un raccourci clavier et une image. Cependant, pour faire cela, GTK+ utilise les GtkStockItem? qui est une structure contenant les informations sur le label et l'image à afficher. GTK+ comporte déjà beaucoup de GtkStockItem? prédéfinis (en tout cas les plus courant). Le paramètre stock_id est donc l'identifiant du GtkStockItem? à utiliser.
Une fois le bouton créé, il ne reste plus qu'à l'inclure dans une fenêtre et de connecter le signal "clicked", pour qu'un clic de souris sur le bouton corresponde à une action précise.

2.2 Modifier le texte d'un bouton

A tout moment pendant l'exécution du programme, nous pouvons connaître ou modifier le texte d'un bouton à l'aide d'une de ces deux fonctions :
texte = bouton.get_label()
bouton.set_label(label)
La première méthode renvoie le texte du bouton, tandis que la deuxième modifie le texte du bouton par la valeur du paramètre label.

2.3 Programme exemple

Pour ce chapitre, notre objectif sera de créer une application contenant un bouton qui permettra de quitter l'application.
# -*- Encoding: Latin-1 -*-
import gtk

EXEMPLE_1 = 0
EXEMPLE_2 = 1
EXEMPLE_3 = 2

def add_btn(window, iExemple):
    # def add_btn(window, iExemple)

    # Fonction en charge d'inserer le bouton dans la fenetre

    # Parametre :
    # - pWindow : fenetre parente
    # - iExemple : mode de creation
    # EXEMPLE_1 pour un bouton label
    # EXEMPLE_2 pour un bouton EXEMPLE_1 + raccourci
    # EXEMPLE_3 pour un bouton EXEMPLE_2 + image
    if iExemple == EXEMPLE_3:
        # Bouton avec un label, un raccourci et une image
        QuitBtn = gtk.Button(stock_id=gtk.STOCK_QUIT)
        window.set_title("Les boutons - Exemple 3")
    elif iExemple == EXEMPLE_2:
        # Bouton avec un label et un raccourci
        QuitBtn = gtk.Button("_Quitter")
        window.set_title("Les boutons - Exemple 2")
    else:
        # Bouton avec un label
        QuitBtn = gtk.Button("Quitter")
        window.set_title("Les boutons - Exemple 1")

    # Connexion du signal "clicked" du bouton
    QuitBtn.connect("clicked", gtk.main_quit, None)

    # Insertion du bouton dans la fenetre
    window.add(QuitBtn)

def main():
    # Creation de la fenetre
    window = gtk.Wwindow(gtk.WINDOW_TOPLEVEL)
    window.set_default_size(320 ,200)
    window.set_border_width(10)

    # Connexion du signal "destroy" de la fenetre
    window.connect("destroy", gtk.main_quit, None)

    # Insertion du bouton
    add_btn(window, EXEMPLE_1)

    # Affichage de la fenetre
    window.show_all()

    # Demarrage de la boucle evenementielle
    gtk.main()

if __name__ == '__main__':
    main()
Résultats







<< Les labels PyGtk Les box >>

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