IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Cercle et curseur


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut Cercle et curseur
    Bonjour,

    Tout est là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # exo 13.20 : écrivez une petite application qui fait apparaître une fenêtre
    # avec un canevas et un widget curseur(Scale). Dans le canevas, dessinez un 
    # cercle, dont l'utilisateur pourra faire varier la taille à l'aide du curseur.
    Je suppose que je devrai savoir faire ça, puisque l'exercice m'est proposé, mais ce n'est pas le cas.
    Je commence à me demander si j'ai vraiment les capacités nécessaires pour apprendre à programmer. En clair, je ne suis pas loin de me décourager.
    J'ai quand même tenté...ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    from tkinter import*
     
     
    def cercle(can,x,y,r) :
        "fonction qui permet de dessiner un cercle de centre x,y et de rayon r"
        can.create_oval(x-r,y-r,x+r,y+r)
     
    class Rond(Frame) :
        "classe qui permet d'instancier des ronds"
        def __init__(self,larg=400,haut=400) :
            Frame.__init__(self)
            self.curs = Scale(self,length=300,orient=HORIZONTAL,label='Rayon :',
                  troughcolor='pink',sliderlength=25,showvalue=0,from_=50,
                  to=400,tickinterval=25,command=self.valeur)
            self.curs.pack(side=BOTTOM)
     
            self.can = Canvas(self,bg='ivory',width=larg,height=haut)
            self.can.pack()
     
            self.larg,self.haut = larg,haut
            self.x,self.y = self.larg/2,self.haut/2
     
            self.master.bind('<Control-M>',self.dessine)
            self.pack()
     
     
        def dessine(self) :
            "pour dessiner un cercle dans le canevas"
     
            self.r = self.valeur
            self.can.delete('ALL')
            self.cer = cercle(self.can,self.x,self.y,self.r)
     
     
        def valeur(self,event) :
            """méthode qui récupère la valeur du rayon définie par l'utilisateur
    à l'aide du curseur"""
            self.r = int(r)
            self.event_generate('<Control-M>')
     
     
     
     
    ## Test Programme ##
     
    if __name__ == "__main__" :
        root = Tk()
        ce = Rond(root)
     
     
        ce.mainloop()
    en sachant que là-dedans, il y a des choses que j'ai recopié sans vraiment les comprendre.
    Bref. Donc à mon avis déjà, il faudrait "prendre" la valeur fixée par l'utilisateur, mais je ne sais pas comment on fait ça.
    J'ai tenté d'exécuter le code pour essayer, selon les codes erreurs qu'il me donne, de trouver progressivement les solutions, mais là j'ai une erreur que je n'ai jamais eu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     File "F:/Python/Exercices/chapitre 13/13 20.py", line 51, in <module>
        ce = Rond(root)
      File "F:/Python/Exercices/chapitre 13/13 20.py", line 21, in __init__
        self.can = Canvas(self,bg='ivory',width=larg,height=haut)
      File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2405, in __init__
        Widget.__init__(self, master, 'canvas', cnf, kw)
      File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2299, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: bad screen distance "."

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par RowanMayfair Voir le message
    progressivement les solutions, mais là j'ai une erreur que je n'ai jamais eu :
    Dans ce fatras de messages, il faut regarder la dernière chose exécutée par votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     File "F:/Python/Exercices/chapitre 13/13 20.py", line 51, in <module>
        ce = Rond(root)
      File "F:/Python/Exercices/chapitre 13/13 20.py", line 21, in __init__
        self.can = Canvas(self,bg='ivory',width=larg,height=haut)
      File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2405, in __init__
        Widget.__init__(self, master, 'canvas', cnf, kw)
      File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2299, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: bad screen distance "."
    et si çà plante lors de la création du Canvas, il faut regarder ce que sont les paramètres passés et vérifier que çà correspond à quelque chose.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    self.can = Canvas(self,bg='ivory',width=larg,height=haut)
            self.can.pack()
    c'est larg et haut qui posent problèmes ?
    parce qu'ils sont en paramètres init :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def __init__(self,larg=400,haut=400)
    donc je dois pouvoir les utiliser non ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par RowanMayfair Voir le message
    parce qu'ils sont en paramètres init :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def __init__(self,larg=400,haut=400)
    donc je dois pouvoir les utiliser non ?
    Dans __init__(self, larg=400, haut=400), larg=... et haut=... définissent des valeurs par défaut pour... les 2 premiers arguments lorsque l'appelant ne les précise pas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    je ne comprends pas.
    Je pensais que quand on plaçait des variables en paramètres, qu'il y ait ou non des valeurs par défaut, cela permettait justement d'utiliser ces variables.
    Là, je ne peux pas utiliser larg et haut. Alors que j'aurai voulu que l'utilisateur puisse les définir, le canevas aurait été adapté, et j'aurai même voulu évidemment que ces variables déterminent la graduation de mon curseur.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par RowanMayfair Voir le message
    je ne comprends pas.
    Je pensais que quand on plaçait des variables en paramètres, qu'il y ait ou non des valeurs par défaut, cela permettait justement d'utiliser ces variables.
    Et que se passe-t-il lorsque ligne 48, Python exécute: ce = Rond(root).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Récupérer les coordonnées du curseur pour tracer une ligne ou un cercle
    Par benyouyou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/08/2015, 16h38
  2. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  3. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  4. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09
  5. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo