Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/09/2006, à 19:44

Zic

Problème d'algorythme python

Bonjour,

J'ai fais un tout petit script python, mais le seul soucis, c'est qu'il ignore la fenêtre1 dès l'execution, au lieu de la fenetre2 ... Voici le code :

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#
# Petit installateur du jeux MenAreAnts en attendant d'avoir mieux !
#

from Tkinter import * # On charge les deux modules nescessaire
from os import system # au fonctionnement de l'installateur

a = raw_input("Utilisez vous Gnome ou KDE ? [Gnome/KDE] ")

fenetre0 = Tk() # On crée une fenêtre
Label(fenetre0, text="Bienvenue dans l'installateur ALPHA de MenAreAnts, cliqué pour continuer").pack()
Label(fenetre0, text="Ou fermer la fenêtre pour arrêter l'installation").pack()
Button(fenetre0, text="OK", command=fenetre0.destroy).pack()
fenetre0.mainloop() # Gestionnaire d'événements

# Instruction effectué après la validation

if(a == "Gnome"): # Vérification
        fenetre1 = Tk() # Préparation
        Label(fenetre1, text="Voulez-vous vraiment installer MenAreAnts sur votre PC ?").pack()
        Button(fenetre1, text="Installer", command=system("./configure && make && gksudo make install")).pack()
        fenetre1.mainloop() # Gestionnaire d'événements
elif(a == "KDE"):
        fenetre2 = Tk() # Préparation
        Label(fentre2, text="Voulez vous vraiment installer MenAreAnts sur votre PC ?").pack()
        Button(fenetre2, text="Installer", command=system("./configure && make && kdesu make install")).pack()
        fenetre2.mainloop() # Gestionnaire d'événement

http://pastebin.ca/159907 <= en couleur big_smile

Si vous pouviez m'apporté la correction et m'expliquer mon erreur ... smile

Dernière modification par Zic (Le 03/09/2006, à 19:48)


GNU/Linux
The dynamic duo

marsaud.org

Hors ligne

#2 Le 03/09/2006, à 23:27

LiRYc

Re : Problème d'algorythme python

de ce que je vois le probleme viens du fait que tu appelles une commande. Elle est executée a la creation de la fenetre.

essaye:

if(a == "Gnome"): # Vérification
        fenetre1 = Tk() # Préparation
        Label(fenetre1, text="Voulez-vous vraiment installer MenAreAnts sur votre PC ?").pack()
        Button(fenetre1, text="Installer", command=gnome).pack()
        fenetre1.mainloop() # Gestionnaire d'événements
elif(a == "KDE"):
        fenetre2 = Tk() # Préparation
        Label(fentre2, text="Voulez vous vraiment installer MenAreAnts sur votre PC ?").pack()
        Button(fenetre2, text="Installer", command=kde).pack()
        fenetre2.mainloop() # Gestionnaire d'événement


def kde():
    system("./configure && make && kdesu make install")
def gnome():
    system("./configure && make && gksudo make install")

mais bon pkoi ne pas faire une fenetre avec deux boutons un pour kde et l'autre pour gnome ?

tiens moi au courrant

Hors ligne

#3 Le 04/09/2006, à 14:02

Zic

Re : Problème d'algorythme python

J'ai toujours le même soucis, j'ai modifié le script comme tu me l'a conseillé :

(Je rappel que le problème est que le logiciel lance la compilation du jeux, avant même d'avoir ouvert la fenetre1 (attention, j'ai commencé la numérotation à partir de 0)) :

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#
# Petit installateur du jeux MenAreAnts en attendant d'avoir mieux !
#

from Tkinter import * # On charge les deux modules nescessaire
from os import system # au fonctionnement de l'installateur

fenetre0 = Tk() # On crée une fenêtre

Label(fenetre0, text="Bienvenue dans l'installateur ALPHA de MenAreAnts, cliqué pour continuer").pack()
Label(fenetre0, text="Ou fermer la fenêtre pour arrêter l'installation").pack()
Button(fenetre0, text="OK", command=fenetre0.destroy).pack()

fenetre0.mainloop() # Gestionnaire d'événements

# Instruction effectué après la validation

fenetre1 = Tk()

Label(fenetre1, text="Voulez-vous vraiment installer MenAreAnts sur votre PC ?").pack()
Button(fenetre1, text="Installation pour Gnome", command=system("./configure && make && gksudo make install")).pack()
Button(fenetre1, text="Installation pour KDE", command=system("./configure && make && kdesu make install")).pack()
Label(fenetre1, text="Installation via le TTY : Choisissez ce choix pour l'installation via un terminal,").pack()
Label(fenetre1, text="le mot de passe root vous sera demandé dans ce TTY (Utile pour les environnemens exotiques :").pack()
Label(fenetre1, text="XFCE, Fluxbox, Enlightment, WindowMaker ...").pack()
Button(fenetre1, text="Autres ...", command=system("./configure && make && make install")).pack()

fenetre1.mainloop()

http://pastebin.ca/160497 <= in color wink.


GNU/Linux
The dynamic duo

marsaud.org

Hors ligne

#4 Le 04/09/2006, à 20:18

LiRYc

Re : Problème d'algorythme python

plutot que de mettre la ligne de commande dans la creation du bouton.
Fait comme je t'ai ecris : une procedure que tu appelles sans les parentheses.
Si tu met un appel de fonction / procedure avec parametre dans la creation d'un bouton . la prodedure se lance automatiquement (c'est comme ca) . Donc regardes mon exemple.

ps: dans ton deuxieme script il faudra ajouter une proc pour le troisieme bouton wink

Dernière modification par LiRYc (Le 04/09/2006, à 20:19)

Hors ligne

#5 Le 04/09/2006, à 20:26

Zic

Re : Problème d'algorythme python

Je n'ai pas trop compris pour le troisième boutons, je me met à la tache pour le reste


GNU/Linux
The dynamic duo

marsaud.org

Hors ligne

#6 Le 04/09/2006, à 20:31

LiRYc

Re : Problème d'algorythme python

Bouton 1:
Button(fenetre1, text="Installation pour Gnome", command=system("./configure && make && gksudo make install")).pack()
Bouton 2:
Button(fenetre1, text="Installation pour KDE", command=system("./configure && make && kdesu make install")).pack()
Bouton 3:
Button(fenetre1, text="Autres ...", command=system("./configure && make && make install")).pack()

meme combat wink

Button(fenetre1, text="Installation pour Gnome", command=gnome)).pack()
Bouton 2:
Button(fenetre1, text="Installation pour KDE", command=kde)).pack()
Bouton 3:
Button(fenetre1, text="Autres ...", command=autres).pack()

def gnome():
.....
def kde():
.....
def autres():
.....

Hors ligne

#7 Le 05/09/2006, à 18:07

Zic

Re : Problème d'algorythme python

Encore moi, voici mon nouveau script :

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#
# Petit installateur du jeux MenAreAnts en attendant d'avoir mieux !
#

from Tkinter import * # On charge les deux modules nescessaire
from os import system # au fonctionnement de l'installateur

def gnome():
        system("./configure && make && gksudo make install")
def kde():
        system("./configure && make && kdesu make install")
def autres():
        system("./configure && make && sudo make install")

fenetre0 = Tk() # On crée une fenêtre

Label(fenetre0, text="Bienvenue dans l'installateur ALPHA de MenAreAnts, cliqué pour continuer").pack()
Label(fenetre0, text="Ou fermer la fenêtre pour arrêter l'installation").pack()
Button(fenetre0, text="OK", command=fenetre0.destroy).pack()

fenetre0.mainloop() # Gestionnaire d'événements

# Instruction effectué après la validation

fenetre1 = Tk()

Label(fenetre1, text="Voulez-vous vraiment installer MenAreAnts sur votre PC ?").pack()
Button(fenetre1, text="Installation pour Gnome", command=gnome).pack()
Button(fenetre1, text="Installation pour KDE", command=kde).pack()
Label(fenetre1, text="Installation via le TTY : Choisissez ce choix pour l'installation via un terminal,").pack()
Label(fenetre1, text="le mot de passe root vous sera demandé dans ce TTY (Utile pour les environnemens exotiques :").pack()
Label(fenetre1, text="XFCE, Fluxbox, Enlightment, WindowMaker ...").pack()
Button(fenetre1, text="Autres ...", command=autres).pack()

fenetre1.mainloop()

http://pastebin.ca/161567 <= colored-syntax

Il manque bien sur pas mal de chose, mais je pense qu'il évolue.

Donc, là je n'ai plus aucun soucis, je cherche juste un moyen d'avoir une "barre de progression" si l'on clique sur le bouton Gnome, KDE, ou autres.

Et aussi, une chose que je n'ai pas appris dans mes quelques connaissances en python :

Une fois que la personne à cliqué sur le Button Gnome, par exemple, cela "destroy" la fenêtre, donc arrête le "mainloop" et en recrée une autre avec la barre de progression, laquelle se détruit à la fin de l'install, puis en crée une autre de la même façon avec une fenêtre Labélisée, avec un simple bouton OK, qui ferme cette fenêtre indiquand la fin de l'installation smile

Bon ok, j'en demande peut-être un peu trop, mais ce n'est pas obligé de me répondre à toutes mes questions big_smile

Merci beaucoup wink

Dernière modification par Zic (Le 05/09/2006, à 18:09)


GNU/Linux
The dynamic duo

marsaud.org

Hors ligne

#8 Le 06/09/2006, à 09:38

LiRYc

Re : Problème d'algorythme python

Le probleme est que ton 'make install' ne te renvois pas son statut, donc difficile de faire un barre de progression qui 'suit' l'evolution de l'installation.
Ensuite 'si je me rappelle bien' il y a des objets Tk de type Dialog, qui appelés en 'showmodal' se place devant ta fenetre principale et attendent une confirmation de l'utilisateur. Enfin avec wxWidgets c'est sur avec Tk c'est a verifier.
De toutes facon a la fin de tes trois fonctions kde, gnome, autres tu peux appeler une autre fonction qu i affiche une fenetre avec un label et un btn 'ok' . Le texte du label peut etre le parametre de la fonction .
http://www.pythonware.com/library/tkinter/introduction/index.htm
pour les objets (comme progressbar et dialogs) regardes du coté de la (Pmw) PythonMegaWidget et de Tix deux libs qui ajoutent des objet bien pratiques a Tkinter.
http://www.eecs.berkeley.edu/~fmang/TclTkMan/tix4.1.0/man/index.html
http://pmw.sourceforge.net/

Hors ligne