[R] Koda : images, boutons et fermeture

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
spik96
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 03 mai 2009 21:33
Status : Hors ligne

[R] Koda : images, boutons et fermeture

#1

Message par spik96 »

Bonjour.

Je suis nouveau et extrêmement débutant en autoit. J'ai fait un petit truc pour aider ma mère car niveau PC, elle est encore moins calée que moi. Jusque là, pas de problème.

Mais là où ça se complique, c'est au niveau du GUI.

J'ai téléchargé Koda, et je positionne un bouton. Mais je ne vois pas où attribuer une fonction lorsque l'on clic sur ce bouton. Je voudrais que le bouton lance un script qui tournerai donc en boucle, script déjà fait, mais est-ce qu'il y a une sorte de.....commande qu'il faudrait insérer quelque part, dans Koda ou dans le script ?

Deuxième question, je souhaiterai insérer une image dans mon GUI. Comment faire ?

Troisième question, j'ai un problème quand j'essaie de fermer le GUI avec la croix classique en haut à droite, ça ne fonctionne pas ! Mais que faire ?

Merci d'avance.
Modifié en dernier par spik96 le mer. 06 mai 2009 13:11, modifié 2 fois.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [Questions de débutant] Koda : images et boutons

#2

Message par GaRydelaMer »

bonjour,

Alors Koda sert uniquement à générer pour toi de manière graphique le code pour AutoIt de fabrication de la fenêtre.

Pour que la fenêtre reste afficher avec autoIt tu dois créer une boucle infinie.

Maintenant pour que ton code s'exécute en fonction des évènements de l'utilisateur, (en l'occurence ta mère clique sur un bouton) c'est dans cette boucle que cela se passe.

Code : Tout sélectionner

;ici le code générer par Koda
$gui = guicreate(............)
$bt = GUICtrlCreateButton(.................)

; ici on va créer la boucle infinie pour faire "vivre la fenêtre"
while 1
    ; ceci pour récupérer les actions de l'utilisateur (message envoyer par windows à ton code) on le stocke ds une variable $nMsg
    $nMsg = GUIGetMsg()
    ; ici on va traiter les différents message
    Switch $nMsg
        ; ici on clique sur fermer la fenêtre ou Alt+F4
        Case $GUI_EVENT_CLOSE
            ; on veut fermer donc exit bye bye ;)
            Exit

        ; ici on a cliqué sur le bouton créer au-dessus de la boucle
        Case $bt
            ; ICI TON CODE A EXECUTER, sois ici directement tout ton code déjà fait, ou appel de la fonction qui contient ton code
            TaFonction()
    EndSwitch
    Sleep(100)
wend

Func TaFonction()
    ;; TON CODE SI TU LE PREFERES LA PLUTO QUE DANS LA BOUCLE
    MsgBox(0, "titre", "Appel de TAFONCTION")
End Func
 
2éme solution dans les options de AutoIt on peux utiliser un mode évènementiel.

Code : Tout sélectionner

Opt("GUIOnEventMode", 1) ; on active le mode évènementiel
;ici le code générer par Koda
$gui = GuiCreate(......)
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")

$bt = GUICtrlCreateButton(...........)
GUISetOnEvent(-1, "TaFonction") ; ou GUISetOnEvent($bt, "TaFonction")

; ici on va créer la boucle infinie pour faire "vivre la fenêtre"
While 1
    Sleep(100)
Wend

Func TaFonction()
    ;; TON CODE
    MsgBox(0, "titre", "Appel de TAFONCTION")
End Func

Func SpecialEvents()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
            MsgBox(0, "Close Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)
            Exit

        Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
            MsgBox(0, "Window Minimized", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

        Case @GUI_CtrlId = $GUI_EVENT_RESTORE
            MsgBox(0, "Window Restored", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

    EndSelect
EndFunc   ;==>SpecialEvents
Voila j'espère t'avoir bien aidé.
spik96
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 03 mai 2009 21:33
Status : Hors ligne

Re: [Questions de débutant] Koda : images, boutons et fermeture

#3

Message par spik96 »

Merci beaucoup !

Mais qu'entend tu dans ""titre" "Appel de TAFONCTION" à la fin de la première méthode ?

Parce que bon, je peux sois mette Button1, soit Commencer (titre de Button1)

Ou alors carrément "Appel de Button1 ce qui m'étonnerait fortement.

Enfin à part ça j'ai compris merci beaucoup

Plus qu'à savoir comment mettre un lien vers le web... Je vais chercher des exemples.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Koda : images, boutons et fermeture

#4

Message par BeCool »

Le but de koda est juste de faire l'interface graphique.
Pour ce qui est du "fonctionnement" de ton programme, il faut coder.

Pour ça, il faut, une fois que tu as fini de faire l'interface de ta GUI appuyer sur la touche F9 sous Koda et copier le code qu'il va te donner et le mettre dans un fichier.au3 que tu auras créer.

Ensuite, si tu sauvegarde ton Fichier.au3 et que tu lance ton script, tu auras, comme tu pourras t'en apercevoir, juste l'interface de ton programme. Ce qui fait que les boutons, même si tu clique dessus n'effectuerons aucune action.

Il te suffira de modifier ton Fichier.au3 en ajoutant ton script déjà créer auparavant aux bons endroits pour que tout fonctionne.

Si tu as besoin d'exemples, n'hésite pas a demander.

Edit : Tu veux ajouter un lien web ou ? Sur un bouton ?
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Koda : images, boutons et fermeture

#5

Message par GaRydelaMer »

RE,

ce que je voulais dire avec "titre" & "Appel..." c'est juste pour créer un fenêtre de message avec juste le bouton Ok. La fonction MsgBox() donc j'y ai mis les paramètres qui vont bien: le titre de la fenêtre, et le message. Tu peux mettre ce que tu veux c'est juste un exemple pour explique la démarche.
spik96
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 03 mai 2009 21:33
Status : Hors ligne

Re: [..] Koda : images, boutons et fermeture

#6

Message par spik96 »

Merci beaucoup !!!

Une dernière question, c'est normal que le script activé par le bouton ne tourne pas en boucle ?

Je vous passe la syntaxe du code du bouton

Code : Tout sélectionner

Case $Button1
        WinWaitActive("MaxTV")
        $ZeroCoor = WinGetPos ( "MaxTV" )
        MouseClick("left", $ZeroCoor[0] + 570, $ZeroCoor[1] + 609, 1, 30) 
        sleep(2000)
        MouseClick("left", $ZeroCoor[0] + 107, $ZeroCoor[1] + 460, 1, 30) 
        sleep(2000)  
 
J'aimerai que lorsque l'on clique sur Button1, ce script s'éxécute en boucle à l'infini (Jusqu'à ce qu'on ferme le GUI, naturellement)
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Koda : images, boutons et fermeture

#7

Message par GaRydelaMer »

Tu as presque la réponse dans ta question:

En autoit il faut tout coder.

Donc quand tu clique sur ton bouton tu éxécute une fonction moi je ferais un truc du genre:

Code créer avec Koda

Le While pour faire vivre la fenêtre, qui va nous servir aussi pour éxécuter une fonction avc ton code
Mais avant ca , on va initialiser une variable à False (Faux) que l'on va mettre a True (vrai) quand on cliker sur le bouton ce qui aura pour effet d'éxécuter la fonction à chaque tour de la boucle.

Code : Tout sélectionner

;; le code de koda GUI, Button1 etc
$Flag = False
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            ; Avec Not, le flag passera de vrai à faux et vice versa à chaque clic sur le bouton
            ; sans fermer la fenêtre et exécutera en boucle la fonction ou l'arrêtera. Sinon: $Flag = True
            $Flag = Not $Flag
    EndSwitch
    If $Flag Then laFonction()
    Sleep(50)
WEnd

Func laFonction()
    WinWaitActive("MaxTV")
    $ZeroCoor = WinGetPos("MaxTV")
    MouseClick("left", $ZeroCoor[0] + 570, $ZeroCoor[1] + 609, 1, 30)
    Sleep(2000)
    MouseClick("left", $ZeroCoor[0] + 107, $ZeroCoor[1] + 460, 1, 30)
    Sleep(2000)
EndFunc   ;==>laFonction
spik96
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 03 mai 2009 21:33
Status : Hors ligne

Re: [..] Koda : images, boutons et fermeture

#8

Message par spik96 »

Merci beaucoup !

Bon ben maintenant je crois que j'ai fini, je met un R à ce sujet :)
Répondre