2016-08-01 4 views
0

Я пытаюсь отобразить два изображения карт в простом графическом интерфейсе (доступно только в Интернете по адресу http://www.codeskulptor.org/#user41_8Poew9PXI8_1.py)код не работает, когда я обновляю переменную

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() 

Проблема заключается в том, что когда я обновите значение img_center [0], код не отобразит второе изображение «ace-hearts».

Затем я удалить строку

img_center[0] += IMG_WIDTH 

Второе изображение правильно отображается «поверх» «две лопаты».

Кто-нибудь знает, почему обновление этой переменной не будет производить правильные результаты (туз-сердечки должны отображаться справа от двух сердец)?

ответ

1

Второй и четвертый параметры, присвоенные draw_image, - center_source и center_dest. Когда вы рисуете второе изображение, которое вы должны держать center_source то же самое и изменить только 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)) 

Рабочий пример: http://www.codeskulptor.org/#user41_5Cm7ZlARnQ_0.py