gpt4 book ai didi

Python tkinter - 在 Canvas 中移动对象

转载 作者:行者123 更新时间:2023-12-01 08:46:21 25 4
gpt4 key购买 nike

我刚刚学习Python,我想创建一个小游戏,我可以在其中将对象从左到右、上下移动......

import tkinter
canvas=tkinter.Canvas(width=800,height=600)
canvas.pack()

canvas.create_text(400,200,text='Starlight',font='Arial 100 bold')
canvas.create_text(400,325,text='Press a button to start the game',font='Arial 20')

a=400
b=500


def start(coordinates):
canvas.delete("all")
canvas.create_rectangle(a-20,b,a+20,b-50)

def moveright(coordinates2):
a=a+100
b=b+0
canvas.delete("all")
canvas.create_rectangle(a-20,b,a+20,b-50)




canvas.bind('<Button-1>',start)
canvas.bind('<Button-3>',start)
canvas.bind_all('<Right>',moveright)

我刚刚编写了向右移动的部分,但是我遇到了一个问题,它看不到 a 是 400,但是如果我将它写入 def 中,那么我可以将它移动一次到新位置,然后它就停在那里。 ....有什么解决办法吗?

最佳答案

当您更改 moveright 中的 ab 时,它会变成本地的,因此下次 moveright 是调用后,a 和 b 不再存在。

无需我重新编写大量代码,您就可以通过在 moveright 中将 ab 声明为全局来进行简单的修复,因此它们在 moveright 终止后仍然存在:

def moveright(coordinates2):
global a
global b
a=a+100
b=b+0
canvas.delete("all")
canvas.create_rectangle(a-20,b,a+20,b-50)

由于 ab 现在是全局的,它们在 moveright 终止后仍然存在,并且可以在下一次调用 时使用向右移动

注意:这不是编写程序的最佳方式,只是最简单的修复方法,也可以消除问题的根源。

关于Python tkinter - 在 Canvas 中移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com