Python Pyglet鼠标事件处理

时间:2014-12-06 10:01:33

标签: python-2.7 mouse pyglet

我的代码是这样的:

@window.event()

def on_mouse_press(e, d, button, modifiers):

    y=400
    for i in temp2:
        if button == mouse.LEFT:
            pyglet.text.Label(i, font_name='Arial', font_size=24, x=50, y=y,
                                    batch=batch)
            y += -30
            break

我想在这里做的是,每次鼠标左键都被cliked,数组中的元素将显示在窗口中。但是,代码会立即打印出来。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您描述的行为实际上不具有可再现性。如果有的话,只是数组temp2中的第一个项目显示在您创建的Label中,因为您遍历数组并在项目位置上没有任何条件的情况下生成标签。然后,在第一个项目由标签表示后立即中断。这是你想要完成的吗?此外,条件button == mouse.LEFT在数组迭代期间并没有真正改变,因此if - 语句和循环的嵌套也可能相反。

关于装饰器window.event:它的实现捕获了你使用它的方式,但它实际上并不是它的使用方式。相反,您应该使用它而不使用括号(仅@window.event)或指定要作为字符串参数(@window.event('on_mouse_press'))处理的事件的性质,以防函数名称与事件名称不同。

同样,我很确定您发布的代码不会显示整个数组temp2,而只会显示第一个元素。有关更有用的答案,您应该详细说明数组的性质和内容以及选择显示元素的方式。