2016-08-01 3 views
0

aktualisiere Ich versuche (nur online unter http://www.codeskulptor.org/#user41_8Poew9PXI8_1.py zugegriffen werden kann) in einem einfachen GUI zwei Bilder von Karten anzuzeigenDer Code funktioniert nicht, wenn ich eine Variable

import simplegui 

#images to be displayed 
ace_hearts = simplegui.load_image("http://i.imgur.com/Nbr6Dzi.png") 
two_spades = simplegui.load_image("http://i.imgur.com/OWayJ1T.png") 

# global constants 
WIDTH = 800 
HEIGHT = 100 


# mouseclick handler 
def click(pos): 
    return pos 


# draw handler 
def draw(canvas): 
    IMG_WIDTH = 67 
    IMG_HEIGHT = 100 
    img_center = [IMG_WIDTH // 2, IMG_HEIGHT // 2] 
    canvas.draw_image(two_spades, (img_center), 
     (IMG_WIDTH, IMG_HEIGHT), (img_center), (IMG_WIDTH, IMG_HEIGHT)) 
    img_center[0] += IMG_WIDTH 
    canvas.draw_image(ace_hearts, (img_center), 
     (IMG_WIDTH, IMG_HEIGHT), (img_center), (IMG_WIDTH, IMG_HEIGHT)) 

# create frame and register draw handler  
frame = simplegui.create_frame("Test image", WIDTH, HEIGHT) 
frame.set_canvas_background("Gray") 
frame.set_mouseclick_handler(click) 
frame.set_draw_handler(draw) 

# start frame 
frame.start() 

Das Problem ist, dass, wenn ich Aktualisiere den Wert von img_center [0], der Code zeigt nicht das zweite Bild "ace-hearts" an.

Dann entfernen die Linie I

img_center[0] += IMG_WIDTH 

Das zweite Bild wird „oben“ korrekt angezeigt von „zwei Spaten“.

Weiß jemand, warum diese Variable Aktualisierung wird nicht produziert die richtigen Ergebnisse ( sollte ace-Herzen rechts von zwei Herzen angezeigt)?

Antwort

1

zweiten und vierten Parameter auf draw_image gegeben sind center_source und center_dest. Wenn Sie das zweite Bild zeichnen müssen Sie center_source das gleiche halten und ändern nur center_dest:

def draw(canvas): 
    IMG_WIDTH = 67 
    IMG_HEIGHT = 100 
    source_center = [IMG_WIDTH // 2, IMG_HEIGHT // 2] 
    dest_center = [IMG_WIDTH // 2, IMG_HEIGHT // 2] 
    canvas.draw_image(two_spades, (source_center), 
     (IMG_WIDTH, IMG_HEIGHT), (dest_center), (IMG_WIDTH, IMG_HEIGHT)) 
    dest_center[0] += IMG_WIDTH 
    canvas.draw_image(ace_hearts, (source_center), 
     (IMG_WIDTH, IMG_HEIGHT), (dest_center), (IMG_WIDTH, IMG_HEIGHT)) 

Arbeitsbeispiel: http://www.codeskulptor.org/#user41_5Cm7ZlARnQ_0.py

Verwandte Themen