我的代码是这样的:
@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,数组中的元素将显示在窗口中。但是,代码会立即打印出来。关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
您描述的行为实际上不具有可再现性。如果有的话,只是数组temp2
中的第一个项目显示在您创建的Label
中,因为您遍历数组并在项目位置上没有任何条件的情况下生成标签。然后,在第一个项目由标签表示后立即中断。这是你想要完成的吗?此外,条件button == mouse.LEFT
在数组迭代期间并没有真正改变,因此if
- 语句和循环的嵌套也可能相反。
关于装饰器window.event
:它的实现捕获了你使用它的方式,但它实际上并不是它的使用方式。相反,您应该使用它而不使用括号(仅@window.event
)或指定要作为字符串参数(@window.event('on_mouse_press')
)处理的事件的性质,以防函数名称与事件名称不同。
同样,我很确定您发布的代码不会显示整个数组temp2
,而只会显示第一个元素。有关更有用的答案,您应该详细说明数组的性质和内容以及选择显示元素的方式。