2016-08-01 54 views
0

我想在一个简单的GUI显示的卡两张图片的代码不能正常工作(只能在网上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 

第二图像被正确显示“顶部”“两黑桃”的。

有谁知道为什么更新这个变量不会产生正确的结果(ACE-心中应显示的两心右)?

回答

1

给予draw_image的第二个和第四个参数是center_sourcecenter_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

相关问题