Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Mes questions en Python.
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Mes questions en Python.

Posté le 14/02/2016 18:23

Bonjours, je voudrai savoir si il est possible de faire ça :
nb_poisson [blue]=[/blue] [red]10[/red]
    [blue]for[/blue] i [blue]in[/blue] nb_poisson [blue]:[/blue]
    poisson[blue]+[/blue]str[blue]([/blue]i[blue])[/blue] [blue]=[/blue] [red]25[/red]



Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 01/04/2016 17:52 | #


Oui, j'ai modifié le programme en local pour le rendre plus souple (je l'ai bien amélioré aussi), et j'avais le même problème.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 17:56 | #


Oui, j'ai modifié le programme en local pour le rendre plus souple
C'est à dire ?

Ajouté le 01/04/2016 à 18:00 :
J'ai trouver la solution :
self.canevas.delete("all")


Ajouté le 01/04/2016 à 18:08 :
Mais si quelqu’un sait pourquoi mon programme ne marchait pas, ça m’intéresse quand même.
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 01/04/2016 18:14 | #


J'ai mis des paramètres pour la taille de la grille, j'ai simplifié des fonctions, adapté la fenêtre (et pour info tes grid à 30 lignes/colonnes ne servent à rien, le canvas à (0, 0) et le bouton à (1, 0) fonctionnent très bien), évité le dimensionnement automatique qui coupait le bouton sur mon écran, intégré les manips avec deux grilles dans la classe Grille, tout nommé en anglais ( ), etc.

En fait pour ton programme j'ai compris tout à l'heure : ton callback (la fonction de gestion de l'évènement du bouton, jeu()), ne se terminait jamais. Hors l'actualisation de l'affichage à l'écran ne peut se faire que lorsqu'on revient à la boucle d'évènements (celle lancée avec mainloop()), donc il fallait que jeu() se termine (et dans mon cas time() se termine en effet ).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 18:19 | #


Ok je vais faire tout ça merci beaucoup

Ajouté le 01/04/2016 à 18:44 :
Il faut utiliser les tabulations ou les espaces ?
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 01/04/2016 19:29 | #


Ben, l'indentation tu la fais comme tu veux... Enfin je conseille toujours les tabulations.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 19:53 | #


Je n'ai pas du tout terminé mais j'ai fait un "éditeur" et à vrai dire je suis plutôt content de moi
Voici le code :
import os
import tkinter

class Grille :


    def __init__ (self) :
        global taille
        self.grille = []
        for ligne in range(taille+2) :
            self.grille.append([])
            for colonne in range(taille+2) :
                self.grille[ligne].append(0)
        
    def generation (self, grille_2) :
        global taille
        for ligne in range(2,taille-1) :
            for colonne in range(2,taille-1) :
                i = 0
                for X in [-1, 0, 1] :
                    for Y in [-1, 0, 1] :
                        if grille_2.grille[ligne+X][colonne+Y] == 1 :
                            i += 1
                if i == 3 or (grille_2.grille[ligne][colonne] == 1 and i == 4) :
                    self.grille[ligne][colonne] = 1
                
                
class Interface :

    def __init__ (self) :
        global taille
        self.fenetre = tkinter.Tk()
        self.fenetre.title("Labyrinthe")
        self.fenetre.geometry("790x695+1+1")
        self.fenetre["bg"] = "blue"
        
        self.canevas = tkinter.Canvas(self.fenetre, width =taille*6, height =taille*6, bg ='white')
        self.canevas.grid(row =0, column =0, rowspan =30, padx =5, pady =5)
        self.canevas.focus_set()
        self.canevas.bind('<Key>',clavier)
        
        self.boutton_valider = tkinter.Button(self.fenetre, text="Valider", fg="blue", width=10, command =time)
        self.boutton_valider.grid(row =10, column =1, padx =5, pady =5)

        self.boutton_quitter = tkinter.Button(self.fenetre, text="Quitter", fg="red", width=10, command =self.fenetre.destroy)
        self.boutton_quitter.grid(row =29, column =1, padx =5, pady =5)
        
    def afficher (self, grille) :
        global taille
        self.canevas.delete("all")
        interface.canevas.create_rectangle(2+6*position[1], 2+6*position[0], 6+6*position[1], 6+6*position[0])
        for ligne in range(1, taille-1) :
            for collone in range(1, taille-1) :
                if grille.grille[ligne][collone] == 1 :
                    self.canevas.create_rectangle(2+6*collone, 2+6*ligne, 6+6*collone, 6+6*ligne, fill="black")
                    
        
    
def time ():
    global grille
    g = Grille()
    g.generation(grille)
    grille = g
    interface.afficher(grille)
    
def clavier (event) :
    global grille, position, interface
    touche = event.keysym
    print(touche)
    print(position)
    if touche == "Up":
        position[0] -= 1
    if touche == "Down":
        position[0] += 1
    if touche == "Right":
        position[1] += 1
    if touche == "Left":
        position[1] -= 1
    if touche == "Return" :
        if grille.grille[position[0]][position[1]] == 1 :
            grille.grille[position[0]][position[1]] = 0
        else :
            grille.grille[position[0]][position[1]] = 1
    print(grille.grille[position[0]][position[1]])        
    interface.afficher(grille)
    
    
taille = 114
position = [int(taille/2), int(taille/2)]
global grille
grille = Grille()

interface = Interface()
interface.afficher(grille)
interface.fenetre.mainloop()

Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 01/04/2016 20:00 | #


Des global taille ? Oh ben non, il faut que tu en fasses un attribut de la classe Grille...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 20:43 | #


Ah oui désolé

Ajouté le 01/04/2016 à 22:52 :
Bizarre, je fais :
self.taille[0] = tkinter.Int.Var()
Et il me répond :
AttributeError: 'NoneType' object has no attribute '_root'

Pourquoi ???
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 01/04/2016 22:59 | #


le point virgule?
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 23:01 | #


Quel point virgule ?
Par contre, je me suis trompé en tapant, c'est :
self.taille[0] = tkinter.IntVar()


Ajouté le 01/04/2016 à 23:33 :
J'ai un gros problème avec IntVar mais je ne vois pas du tout comment y remédier, voici le code :
import os
import tkinter

class Grille :


    def __init__ (self) :
        self.taille = [tkinter.IntVar(),tkinter.IntVar()]
        self.grille = []
        for ligne in range(self.taille[0]+2) :
            self.grille.append([])
            for colonne in range(self.taille[1]+2) :
                self.grille[ligne].append(0)

    def generation (self, grille_2) :
        for ligne in range(1,self.taille[0].get()-1) :
            for colonne in range(1,self.taille[1].get()-1) :
                i = 0
                for X in [-1, 0, 1] :
                    for Y in [-1, 0, 1] :
                        if grille_2.grille[ligne+X][colonne+Y] == 1 :
                            i += 1
                if i == 3 or (grille_2.grille[ligne][colonne] == 1 and i == 4) :
                    self.grille[ligne][colonne] = 1


class Interface :

    def __init__ (self) :
        global grille
        self.fenetre = tkinter.Tk()
        self.fenetre.title("Labyrinthe")
        self.fenetre.geometry("1350x689+1+1")
        self.fenetre["bg"] = "blue"

        self.canevas = tkinter.Canvas(self.fenetre, width =1250, height =676, bg ='white')
        self.canevas.grid(row =0, column =0, rowspan =30, padx =5, pady =5)
        self.canevas.focus_set()
        self.canevas.bind('<Key>',clavier)
        
        self.hauteur_label = tkinter.Label(self.fenetre, text="Hauteur :", width=10, height =1, justify="left")
        self.hauteur_label.grid(row =0, column =1, padx =2, pady =2)
        
        self.largeur_label = tkinter.Label(self.fenetre, text="Largeur :", width=10, height =1, justify="left")
        self.largeur_label.grid(row =2, column =1, padx =2, pady =2)
        
        grille.taille[0].set(100)
        grille.taille[1].set(100)
        
        self.hauteur_spin = tkinter.Spinbox(self.fenetre,from_=1,to=114,increment=1,
        textvariable=grille.taille[0],width=10)
        self.hauteur_spin.grid(row =1, column =1, padx =2, pady =2)
        
        self.largeur_spin = tkinter.Spinbox(self.fenetre,from_=1,to=200,increment=1,
        textvariable=grille.taille[1],width=10)
        self.largeur_spin.grid(row =3, column =1, padx =2, pady =2)
        
        self.boutton_effacer = tkinter.Button(self.fenetre, text="Effacer", fg="blue", width=10, height =1, command =effacer)
        self.boutton_effacer.grid(row =5, column =1, padx =2, pady =2)

        self.boutton_valider = tkinter.Button(self.fenetre, text="Génération", fg="blue", width=10, height =1, command =time)
        self.boutton_valider.grid(row =10, column =1, padx =2, pady =2)

        self.boutton_quitter = tkinter.Button(self.fenetre, text="Quitter", fg="red", width=10, height =1, command =self.fenetre.destroy)
        self.boutton_quitter.grid(row =29, column =1, padx =2, pady =2)

    def afficher (self, grille) :
        self.canevas.delete("all")
        interface.canevas.create_rectangle(4+6*(position[1]-1), 4+6*(position[0]-1), 8+6*(position[1]-1), 8+6*(position[0]-1))
        for ligne in range(grille.taille[0].get()-1) :
            for collone in range(grille.taille[1].get()-1) :
                if grille.grille[ligne+1][collone+1] == 1 :
                    self.canevas.create_rectangle(4+6*collone, 4+6*ligne, 8+6*collone, 8+6*ligne, fill="black")



def time ():
    global grille
    g = Grille()
    g.generation(grille)
    grille = g
    interface.afficher(grille)

def clavier (event) :
    global grille, position, interface
    touche = event.keysym
    if touche == "Up":
        if position[0] > 1 :
            position[0] -= 1
    if touche == "Down":
        if position[0] < grille.taille.get()-2 :
            position[0] += 1
    if touche == "Right":
        if position[1] < grille.taille.get()-2 :
            position[1] += 1
    if touche == "Left":
        if position[1] > 1 :
            position[1] -= 1
    if touche == "Return" :
        if grille.grille[position[0]][position[1]] == 1 :
            grille.grille[position[0]][position[1]] = 0
        else :
            grille.grille[position[0]][position[1]] = 1
    interface.afficher(grille)

def effacer () :
    global grille
    grille = Grille()
    interface.afficher(grille)

global grille
grille = Grille()
position = [int(grille.taille[0].get()/2), int(grille.taille[1].get()/2)]

interface = Interface()
interface.afficher(grille)
interface.fenetre.mainloop()


Ajouté le 02/04/2016 à 12:27 :
J'ai laissé tomber IntVar ça ne sert à rien ici.

Ajouté le 02/04/2016 à 13:49 :
Je fais :
self.menufigure = tkinter.Menu(self.fenetre,tearoff=0)
self.menufigure.add_command(label="Planeur",command=planeur)
self.menufigure.add_command(label="Vaisseau",command=vaisseau)
self.menufigure.add_command(label="Clown(111)",command=clown)
self.menufigure.grid(row =1, column =1, padx =1, pady =1)
Et, j'ai :
Traceback (most recent call last):
  File "C:\...\jeudelavie Leph.py", line 134, in <module>
    interface = Interface()
  File "C:\...\jeudelavie Leph.py", line 57, in __init__
    self.menufigure.grid(row =1, column =1, padx =1, pady =1)
  File "C:\...\lib\tkinter\__init__.py", line 2073, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: can't manage ".49138896": it's a top-level window

Cela veut-t'il dire que je ne peux pas afficher mon widget menu n'importe où dans mon interface.
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 02/04/2016 14:59 | #


Mais tu utilises un menu, c'est un top-level, tu ne peux pas le placer avec grid(). La méthode grid() permet d'arranger des éléments dans la fenêtre, mais si tu prends ton navigateur web et que tu cliques droit en bas à droite (en supposant que la fenêtre est suffisamment petite), tu vois bien que le menu peut dépasser de la fenêtre : il ne peut donc pas être dedans.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 02/04/2016 17:20 | # | Fichier joint


Mais alors, comment dois je faire pour mettre mon menu déroulant à cet endroit (fichier joint).
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 02/04/2016 17:28 | #


Mais le menu que tu utilises dans ton code c'est un menu type clic droit ou barre de menus (fichier, édition, etc.). Il n'a pas vocation a être affiché en permanence.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 03/04/2016 11:13 | # | Fichier joint


Mais alors comment je dois faire pour avoir un truc comme ceci : fichier joint
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 03/04/2016 11:18 | #


Ben tu prends le premier lien pour « tkinter Menu » sur ton moteur de recherche préféré...
http://effbot.org/tkinterbook/menu.htm
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 03/04/2016 11:31 | #


Oui mais je voudrai pouvoir placer mon menu n'import où, est possible ?
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 03/04/2016 11:32 | #


Ben la barre de menus ça se met en haut à gauche... et le menu sous son nom dans la barre de menus. Que veux-tu faire d'autre ? ><
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 03/04/2016 11:35 | #


Oui c'est pas faux

Ajouté le 03/04/2016 à 11:58 :
Je voudrais faire une commande qui lance la fonction "time" en boucle.
J'ai pensé à utiliser un bouton radio ou une case a coché (si je la coche ça appelle la fonction time puis je reviens d'en me boucle mais c'est toujours coché alors ça rappelle la fonction time et ainsi de suite jusqu’à ce qu'on décoche la case)
Mais sa ne marche pas
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 03/04/2016 12:00 | #


Utilise un timer. Regarde peut-être ça :
http://stackoverflow.com/questions/2400262/how-to-create-a-timer-using-tkinter
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 03/04/2016 13:44 | #


Heu, j'ai du mal à comprendre le fonctionnement d'un timer ?
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 03/04/2016 13:54 | #


Un timer va te permettre d'appeler régulièrement une fonction. Par exemple une fois par seconde, tu vas appeler la fonction time() pour mettre à jour ton plateau.

Faut bien imaginer que si tu le laissais tourner sans le réguler temporellement ça pourrait passer des centaines de génération en une seconde.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 77 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd