Référence GUI

AutoIt a la capacité de créer des Interfaces Utilisateur Graphiques Simples (GUIs) qui consiste en fenêtres et contrôles.

 

Concepts GUI

Une GUI consiste en une ou plusieurs fenêtres dont chacune d'elles contient un ou plusieurs contrôles. Les GUIs sont "conductrices d'événements" ce qui signifie que vous pouvez réagir aux événements - Tel qu'un clic sur un bouton. Vous passez la plupart de votre temps à attendre qu'un événement arrive - C'est un peu différent d'un script normal où vous avez le contrôle de ce qui arrive et quand ça arrive ! Pensez-y comme l'attente de l'arrivée du facteur devant votre porte - Vous êtes assis là jusqu'à ce qu'une lettre passe par la boîte aux lettres et ensuite vous la regardez et décidez quoi faire avec - C'est exactement comme ça que fonctionnent les GUIs - Vous attendez l'arrivée du facteur.

Bien sûr, vous pouvez choisir de faire d'autres tâches pendant que la GUI est active - Par exemple vous pourriez utiliser les fonctions GUI pour créer une barre de progression que vous mettriez à jour tandis que votre script exécute d'autres actions complexes.

 

Contrôles GUI

Tous les utilisateurs devront se familiariser avec les contrôles - Tout ce que vous cliquez ou avec lequel vous interagissez dans une fenêtre est un type de contrôle. Les types de contrôle qui peuvent être créés avec AutoIt sont listés ci-dessous - Vous avez sans doute utilisé la plupart d'entre eux dans d'autres programmes à fenêtres.

  • Label
  • Un bout de texte simple.
  • Button
  • Un bouton simple.
  • Input
  • Un contrôle d'une simple ligne dans lequel vous pouvez entrer du texte.
  • Edit
  • Un contrôle de multiple lignes dans lequel vous pouvez entrer du texte.
  • Checkbox
  • Une case qui peut être "cochée" ou "décochée".
  • Radio
  • Un ensemble de boutons circulaires - Un seul d'entre eux peut être actif à la fois.
  • Combo
  • Une liste déroulante.
  • List
  • Une liste.
  • Date
  • Un sélecteur de date.
  • Pic
  • Une image.
  • Icon
  • Une icône.
  • Progress
  • Un barre de progression.
  • Tab
  • Un groupe de contrôles contenant des onglets.
  • UpDown
  • Un contrôle qui peut être ajoutée à un contrôle d'entrée.
  • Avi
  • Affiche un clip AVI.
  • Menu
  • Un menu dans la partie supérieure de la fenêtre.
  • ContextMenu
  • Un menu qui apparaît lorsque vous faites un clic droit dans la fenêtre.
  • TreeView
  • Un contrôle similaire à l'explorateur de fichier Windows.
  • Slider
  • Un contrôle similaire au contrôle de volume de Windows.
  • ListView
  • Un contrôle affichant des informations en colonnes.
  • ListViewItem
  • Un contrôle affichant un élément dans un contrôle ListView.
  • Graphic
  • Un contrôle affichant des éléments graphique avec GUICtrlSetGraphic.
  • Dummy
  • Un contrôle utilisateur factice.

     

    Voici un exemple d'une fenêtre GUI simple qui contient une multitude de contrôles disponibles. Comme vous pouvez le constater, il est possible de créer une GUI très détaillée !

     

    Les contrôles sont créés par l'ensemble des fonctions GUICtrlCreate... .  Lorsqu'un contrôle est créé un Contrôle ID est retourné.  La chose la plus importante à retenir sur le contrôl ID est :

  • Le contrôle ID est un nombre positif (Qui est toujours plus grand que zéro).
  • Chaque contrôle ID est unique - Même lorsqu'il y a de multiple fenêtres.
  • Le contrôle ID est en fait de la même valeur que celui retouné par l'outil AutoIt Window Info.
  •  

    Fonctions GUI basiques

    Voici les fonctions principale dont vous aurez besoin pour créer une GUI. Ce ne sont que les fonctions essentielles, vous en découvrirez beaucoup plus lorsque vous serez prêt a créer des GUIs très avancées.

    Fonction Explication
    GUICreate Crée une fenêtre.
    GUICtrlCreate... Crée divers contrôles dans une fenêtre.
    GUISetState Affiche ou cache une fenêtre.
    GUIGetMsg Interroge la GUI pour voir si un événement est arrivé (Mode boucle de message seulement).
    GUICtrlRead Lit les données d'un contrôle.
    GUICtrlSetData Fixe/Change les données d'un contrôle.
    GUICtrlSet... Change diverses options pour un contrôle (Couleur, style, etc.).

     

    Vous aurez besoin d'inclure (#include) <GUIConstantsEx.au3> pour les constantes de base GUI. Il y a d'autres fichiers contenants les constantes en relation avec les divers contrôles qui peuvent être crées dans une GUI.

     

    Pour commencer nous allons créer une fenêtre - Appelons là "Hello World" et fixons sa taille à 200 par 100 pixels. Lorsqu'une nouvelle fenêtre est créée elle est cachée - Nous devons donc "l'afficher".

    #include <GUIConstantsEx.au3>

    GUICreate("Hello World", 200, 100)
    GUISetState(@SW_SHOW)
    Sleep(2000)

     

    Si vous lancez ce script, vous verrez apparaître une fenêtre pendant deux secondes, puis disparaître. Pas trés intéressent n'est-ce pas ? - Ajoutons un peu de texte, et un bouton OK. Le texte sera ajouté à la position 30, 10 et le bouton à la position 70, 50 avec une largeur de 60 pixels.

    #include <GUIConstantsEx.au3>

    GUICreate("Hello World", 200, 100)
    GUICtrlCreateLabel("Hello world! Comment allez vous ?", 30, 10)
    GUICtrlCreateButton("OK", 70, 50, 60)
    GUISetState(@SW_SHOW)
    Sleep(2000)

     

    Pas si mal, mais comment faire pour que la GUI réagisse au clic du bouton ? Bien, c'est là que nous devons prendre une décision sur la manière dont nous allons traiter les événements - Via les fonctions MessageLoop ou OnEvent.

     

    Modes des événement des GUI

    Comme mentionné ci-dessus il y a deux modes GUI de base : Le mode MessageLoop et le mode OnEvent. Les modes sont simplement deux façons différentes de réagir aux événements GUI. Le mode que vous choisirez dépendra de votre préférence personnelle, et dans une certaine mesure du type de GUI que vous voulez créer. Ces deux modes sont capables de créer n'importe quelle GUI que vous souhaitez mais parfois l'un des modes convient plus que l'autre pour réaliser une tâche.

    Le mode par défaut, est le mode MessageLoop (Boucle de message).  Pour passer en mode OnEvent (Evénementiel), utilisez Opt("GUIOnEventMode", 1).

     

     

    Mode Message-loop - Boucle de message (défaut)

    Dans le mode Message-loop votre script passera la majorité de son temps dans une boucle infinie. Cette boucle interrogera simplement la GUI en utilisant la fonction GUIGetMsg. Lorsqu'un événement s'est produit, la valeur de retour de la fonction GUIGetMsg montrera les détails (Un bouton est cliqué, la GUI à été fermée, etc.).

    Dans ce mode vous recevrez uniquement des événements tandis que vous interrogerez activement la fonction GUIGETMSG, donc vous devez vous assurer que vous l'appelez plusieurs fois par seconde sous peine de rendre votre GUI inerte.

    Ce mode est trés bien pour une GUI "Reine", et dont vous n'attendez qu'un événement utilisateur.

    Voir cette page pour des explications détaillées sur le mode MessageLoop.

     

    Mode OnEvent - Mode événementiel

    Dans le mode OnEvent (Evénement) au lieu d'interroger en permanence la GUI pour savoir si quelque chose c'est passé, vous faites en sorte que la GUI mette temporairement votre script en pause et appelle une fonction prédéfinie pour traiter l'événement. Par exemple, si l'utilisateur clique le Bouton1, la GUI met en pause votre script principal et appelle une fonction utilisateur précédemment définie qui traite le Button1. Lorsque l'appel de la fonction est complété, le script principal est repris là ou il en était. Ce mode est similaire à la méthode Forms de Visual Basic.

    Ce mode est plus adapter pour les scripts dont la GUI passe en second plan et permet au script principal de réaliser des tâches continues tout en surveillant la GUI.

    Voir cette page pour des explications détaillées sur le mode OnEvent.