begin process at 2012 05 25 05:36:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Débutant(e)

 > 

Problème de variable semble t-il [Débutant]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de variable semble t-il [Débutant]

lundi 8 août 2011 à 11:17:40 | Problème de variable semble t-il [Débutant]

asterixobelix

Bonjour,

Je débute en python comme vous allez le voir avec ma question.
Je souhaite tracer un cercle dont le rayon est entré dans un champ "Entry".
J'obtiens avec le code ci-dessous le message suivant:

File "C:\Python27\Scripts\Cercle\cercle.py", line 13, in tracer
cercle(100, 100, rayon)
File "C:\Python27\Scripts\Cercle\cercle.py", line 9, in cercle
fen1.create_oval(x-r, y-r, x+r, y+r, outline=coul)
TypeError: unsupported operand type(s) for -: 'int' and 'instance'

Si je comprend un peu la variable "rayon" pose problème.
Il me manque un élément, ça fait une journée que je cherche!

Help me!

Code Python :
from Tkinter import *
from math import *

rayon=50
 
def cercle(x, y, r, coul ='black'):
    "tracé d'un cercle de centre (x,y) et de rayon r"
    fen1.create_oval(x-r, y-r, x+r, y+r, outline=coul)

def tracer():
    global rayon
    cercle(100, 100, rayon)

def effacer():
    fen1.delete(ALL)
    
fenetre=Tk()
fenetre.title("Tracé d'un cercle")

rayon = Entry(fenetre)
rayon.grid(row=0,column=1,sticky =W)

#etiquette_rayon=Label(fenetre,text="Rayon")
#etiquette_rayon.grid(row=0,column=0,sticky =E)

etiquette_rayon=Label(fenetre,text=rayon)
etiquette_rayon.grid(row=0,column=0,sticky =E)

fen1=Canvas(fenetre,bg='white',height=200,width=200)
fen1.grid(rowspan=4, column=0,padx=0, pady=10)

bouton_tracer = Button(fenetre, text="Tracer",command=tracer)
bouton_tracer.grid(row=1, column=1,padx=0, pady=0)

bouton_effacer = Button(fenetre, text="Effacer",command=effacer)
bouton_effacer.grid(row=2, column=1,padx=0, pady=0)

bouton_quitter = Button(fenetre, text="Quitter",command=fenetre.destroy)
bouton_quitter.grid(row=3, column=1,padx=0, pady=0)

fenetre.mainloop()


Merci.
lundi 8 août 2011 à 15:29:18 | Re : Problème de variable semble t-il [Débutant]

lespinx

Bonjour,

Duplication de variable
Ligne 4 ==> définition de la variable rayon=50
Ligne 20 ==> définition de l'objet TkInter (instance) rayon = Entry(fenetre)
Il faut changer le nom de la variable ou de l'objet TkInter

La ligne 23 est correcte, la ligne 26 est incorrecte

Lecture de la zone de saisie
Dans la fonction "tracer" il faut inclure le contrôle et la lecture de la zone de saisie:
==> rayon=int(ent_rayon.get())
Contrôle ==> s'assurer que rayon est numérique et supérieur à zéro

Cordialement
lundi 8 août 2011 à 17:47:03 | Re : Problème de variable semble t-il [Débutant]

asterixobelix

J'ai remplacé par:
Code Python :
def tracer():
    global rayon
    rayon=int(ent_rayon.get())
    if rayon>0:
        cercle(100, 100, rayon)

ça fonctionne mieux, si 0 est entré OK, mais si le champ "ent_rayon" est vide alors:
Code :
  File "C:\Python27\Scripts\Cercle\cercle.py", line 13, in tracer
    rayon=int(ent_rayon.get())
ValueError: invalid literal for int() with base 10: ''


Comment vérifier qu'il n'est pas vide SVP?

Obélix
lundi 8 août 2011 à 21:38:08 | Re : Problème de variable semble t-il [Débutant]

lespinx

Si la zone de saisie est vide ou si elle contient des caractères non numérique, alors cela génère une exception au moment de la conversion vers le type Integer
Il est possible d'intercepter l'exception et de la gérer avec "try et except", on en profitera pour contrôler les bornes du rayon (par exemple : supérieur à zéro et inférieur à 100) :

Code Python :
def tracer():
    try:
        rayon=int(ent_rayon.get())

        if rayon>0 and rayon<100:
            cercle(100, 100, rayon)
        else:
            print "rayon hors limites"
            return

    except:
        print "saisie non numerique"
        return


Cette discussion est classée dans : fenetre, grid, tracer, cercle, rayon


Répondre à ce message

Sujets en rapport avec ce message

Gestion d'une interface graphique [ par lilly74 ] Bonjour, je débute en python et j'essaie de créer une interface graphique qui prend en entrée deux chaînes de caractères et qui les traite selon une m comment utiliser le réceptioonnaire d'évenement pour tester en permanence une entrée [ par fbeauch ] Bonjour à tous J'ai besoin d'aide pour élaborer un petit programme qui teste en continue une entrée et qui en fonction de sa valeur envoie une valeu Class [ par Mic92 ] Salut à tous Encore une question de débutant, j'ai du mal a assimiller les class... Voici un code: Je comprend qu'il ne fonctionne pas (def nouveaucli [Turtle] Comment Déterminer les points d'intersections de deux segments ? [ par pourkoisa ] Bonjour à tous :) Je réalise actuellement un script avec les modules Turtle et Tkinter afin de représenter des chryzodes... Je souhaite aller plus l fenêtre avec client /serveur avec socket. [ par francoisjack ] Bonjour a tous j'ai un problème avec mon pt programme je veux faire une connexion entre deux fenêtres client et serveur avec une connexion via socket Fonction python qt designer [ par jimshnaow ] Bonjour a tous désolé de vous déranger, mais j'ai un gros souci.... Grace à qt designer j'ai créer plusieurs interfaces graphiques, à savoir A, B, C, Calculateur de pH/Problème radio boutton [ par adriber ] Bonjour je me suis lancé dans un projet de calculateur de ph (chimie). Je suis face à un dernier problème (et non des moindres). Voici mon code: [code WXPython, probleme avec un notebook [ par faucheuse ] Par défaut Probleme sizer dans un panel dans un notebook Bonjour à tous, J'ai créer un notebook dans lequel je met plusieurs panel ainsi que un ou pl a propos de tkinter [ par isaaclamour ] bonjour les amis debutant en python je suis entrain de concevoir une application de telephonie sur ip jai donc realisé une interface graphique (avec d Affichage des données dans un Treeview [ par dahrprog ] j'ai enfin pu connecté l'interface Tkinter avec ma base PostgreSQL , j'ai mis ce code : [code=py]#! /usr/bin/python #-*- coding:Utf-8-*- from Tkint


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales