我是python中的新手。我试图在画布上实现简单的对象移动。
想法是简单地更新X,Y坐标并重绘椭圆。
我每次更新坐标时都尝试使用canvas.update()
,但它不会以这种方式工作。
class character():
x = 10
y = 10
color = "red"
canvas.create_oval(x, y, x + 40, y + 40, fill=color)
def moveup():
character.y -= 10
def moveright():
character.x += 10
def movedown():
character.y += 10
def moveleft():
character.x -= 10
def choose():
choosen_move = randint(0, 4)
if choosen_move == 0:
moveup()
elif choosen_move == 1:
moveright()
elif choosen_move == 2:
movedown()
elif choosen_move == 3:
moveleft()
print "%s | %s" % (character.x, character.y)
canvas.update()
sleep(1)
while True:
choose()
root.mainloop()
答案 0 :(得分:3)
而不是character.x += 10
或character.y -= 10
,您需要使用move
:
canvas.move(oval, 10, 0) # for x += 10
canvas.move(oval, 0, -10) # for y -= 10
其余的应该遵循。
您可以只说Character
。
oval = canvas.create_oval(x, y, x + 40, y + 40, fill=color)
课程
答案 1 :(得分:1)
**请注意:这些代码都不起作用 - 它就是为了给你提供有关如何做事的想法。 :)
按下按钮时,我的键盘上的对象会在屏幕上移动。
而不是循环,你只需用config和bind来改变一个对象的x和y ......当你在键盘上按左键时,将运行def来移动东西。 (或事)
def move_object_left()...
object.config(move left...)
绑定内容的示例:
entry.bind('<ButtonRelease-1>', lambda event: self.maximise_keyboard(event.widget))
x_var = 5 y_var = 9
**在此处将对象绑定到键盘:
*On_key_press('RIGHT'):
x_var = x_var + 5
object.config(x = x_var)
如果你愿意,你可以一次移动一堆东西......(虽然你必须自己做代码大声笑)
list_of_stuff = [tree,bush,snail]
for entry in list_of_stuff:
...
**Get object X and Y of the object...
** add a number to this X and Y...