2017-07-11 7 views
-1

Le code suivant dans les graphiques de python de IDLE3.6.1 n'est pas en cours d'exécution, il est juste en cours d'exécution fenêtre de la console, mais ne pas exécuter:IDLE3.6.1 est juste en cours d'exécution fenêtre de la console, mais pas l'exécution

from graphics import* 
import time 

def moveAll(shapeList,dx,dy): 
    for shape in shapeList: 
     shape.move(dx,dy) 

def moveAllOnline(shapeList,dx,dy,repititions,delay): 
    for i in range(repititions): 
     moveAll(shapeList,dx,dy) 
     time.sleep(delay) 

def makeFace(center,win): 
    head=Circle(center,25) 
    head.setFill("green") 
    head.draw(win) 
    eye1Center=center.clone() 
    eye1Center.move(-10,5) 
    eye1=Circle(eye1Center,5) 
    eye1.setFill("blue") 
    eye1.draw(win) 
    eye2End1=eye1Center.clone() 
    eye2End1.move(15,0) 
    eye2End2=eye2End1.clone() 
    eye2End2.move(10,0) 
    eye2=Line(eye2End1,eye2End2) 
    eye2.setWidth(3) 
    eye2.draw(win) 
    mouthCorner1=center.clone() 
    mouthCorner1.move(-10,-10) 
    mouthCorner2=mouthCorner1.clone() 
    mouthCorner2.move(20,-5) 
    mouth=Oval(mouthcorner1,mouthCorner2) 
    mouth.setFill("red") 
    mouth.draw(win) 
    return [head,eye1,eye2,mouth] 

def main(): 
    winWidth=300 
    winHeight=300 
    win=GraphWin('Back and forth',winWidth,winHeight) 
    win.setCoords(0,0,winWidth,winHeight) 
    rect=Rectangle(Point(200,90),Point(220,100)) 
    rect.setFill("blue") 
    rect.draw(win) 
    faceList=makeFace(Point(40,100),win) 
    faceList2=makeFace(Point(150,125),win) 
    stepsAcross=46 
    dx=5 
    dy=3 
    wait=0.05 
    for i in range(3): 
     makeAllOnline(facelist,dx,0,stepsAcross,wait) 
     moveAllOnLine(faceList,-dx,dy,stepsAcross//2,wait) 
     moveAllOnLine(faceList,-dx,dy,stepsAcross//2,wait) 
    message=Text(Point(winWidth/2,20),'Click here to quit') 
    message.draw(win) 
    win.getmouse() 
    win.close() 

main() 
+3

S'il vous plaît, corriger la mise en forme de votre question – mkiever

+0

Code Reindented. – phd

+0

Reindented le code de retour. – cdlane

Répondre

0

J'ai trouvé plusieurs problèmes avec votre code: même après @phd formaté par la demande de @ mkiever, ces lignes ont été en retrait d'un niveau trop:

message=Text(Point(winWidth/2,20),'Click here to quit') 
message.draw(win) 
win.getmouse() 
win.close() 

Ils ne devraient pas faire partie de la boucle. Vous avez également eu plusieurs fautes d'orthographe relatives au cas dans le code:

makeAllOnline -> moveAllOnLine 
moveAllOnline -> moveAllOnLine 
mouthcorner1 -> mouthCorner1 
facelist -> faceList 

Je l'ai retravaillé pour le rendre lisible et exécutable à partir de la console Python:

import time 
from graphics import * 

def moveAll(shapeList, dx, dy): 
    for shape in shapeList: 
     shape.move(dx, dy) 

def moveAllOnLine(shapeList, dx, dy, repetitions, delay): 
    for _ in range(repetitions): 
     moveAll(shapeList, dx, dy) 
     time.sleep(delay) 

def makeFace(center, win): 
    head = Circle(center, 25) 
    head.setFill('green') 
    head.draw(win) 

    eye1Center = center.clone() 
    eye1Center.move(-10, 5) 
    eye1 = Circle(eye1Center, 5) 
    eye1.setFill('blue') 
    eye1.draw(win) 

    eye2End1 = eye1Center.clone() 
    eye2End1.move(15, 0) 
    eye2End2 = eye2End1.clone() 
    eye2End2.move(10, 0) 
    eye2 = Line(eye2End1, eye2End2) 
    eye2.setWidth(3) 
    eye2.draw(win) 

    mouthCorner1 = center.clone() 
    mouthCorner1.move(-10, -10) 
    mouthCorner2 = mouthCorner1.clone() 
    mouthCorner2.move(20, -5) 
    mouth = Oval(mouthCorner1, mouthCorner2) 
    mouth.setFill('red') 
    mouth.draw(win) 

    return [head, eye1, eye2, mouth] 

def main(): 
    winWidth, winHeight = 300, 300 
    win = GraphWin('Back and forth', winWidth, winHeight) 
    win.setCoords(0, 0, winWidth, winHeight) 

    rect = Rectangle(Point(200, 90), Point(220, 100)) 
    rect.setFill('blue') 
    rect.draw(win) 

    faceList = makeFace(Point(40, 100), win) 

    stepsAcross = 46 
    dx, dy = 5, 3 
    wait = 0.05 

    for _ in range(3): 
     moveAllOnLine(faceList, dx, 0, stepsAcross, wait) 
     moveAllOnLine(faceList, -dx, dy, stepsAcross // 2, wait) 
     moveAllOnLine(faceList, -dx, dy, stepsAcross // 2, wait) 

    message = Text(Point(winWidth/2, 20), 'Click here to quit') 
    message.draw(win) 

    win.getMouse() 
    win.close() 

main() 

En ce qui IDLE, mon expérience a été que la fenêtre graphique est apparue derrière la fenêtre de la console, vous devez donc déplacer les fenêtres au démarrage. Que ce soit fait ce que vous vouliez, je n'ai aucune idée:

enter image description here