簡體   English   中英

tkinter在畫布上移動對象

[英]tkinter move object on canvas

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

代替character.x += 10character.y -= 10 ,您需要使用move

canvas.move(oval, 10, 0)   #  for x += 10
canvas.move(oval, 0, -10)  #  for y -= 10

其余應遵循。

您可以說oval = canvas.create_oval(x, y, x + 40, y + 40, fill=color)代替Character類。

**請注意:這些代碼均無效-只是在這里為您提供有關操作方法的想法。 :)

我有綁定到鍵盤的對象,這些對象在按下按鈕時會在屏幕上移動。

除了循環之外,您還可以使用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 = [樹,灌木,蝸牛]

    for entry in list_of_stuff:
        ...
        **Get object X and Y of the object...
        ** add a number to this X and Y...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM