[英]How to change the coordinates of a shape (i.e. oval) in tkinter?
我正在尝试制作一个程序,当您按下S按钮时,它将形状移至网格下方的正方形。 我设法使形状第一次移动,但此后它一直在变大。
这是我的代码:
from tkinter import *
root = Tk()
global y
y = 0
x = 0
def down(event):
global y
global x
y = y+100
x = x+ 100
global pirate
canvas.delete(pirate)
pirate = canvas.create_oval((x,y), (100,100), fill = 'red')
print(y)
canvas = Canvas(root, width = 1000, height = 1000)
canvas.pack()
for a in range (10):
i = a*100
canvas.create_line((i,0), (i,1000))
for a in range (10):
i = a*100
canvas.create_line((0,i), (1000,i))
pirate = canvas.create_oval((x, y),(100, 100), fill = 'red')
root.bind('<Key - S>', down)
root.mainloop()
正如ArtOfWarfare在评论中提到的那样,与其每次都创建新的椭圆,不如创建一个椭圆并将其移动 。
def down(event):
canvas.move(pirate, 0, 100)
上面的代码足以将椭圆形向下移动一个正方形。
假设您需要移动椭圆形而不是向下移动,而不是仅将S
绑定到画布,我认为您应该获取所有关键事件并根据按下的char进行操作。
def keyPressed(event):
if event.char.lower() == 's': #move it down if it's S or s
canvas.move(pirate, 0, 100)
root.bind('<Key>', keyPressed) #get all key pressed events
您有一个问题,在python-tk中未指定椭圆形create_oval(x,y,w,h)
,但未指定create_oval(x1,y1,x2,y2)
。 希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.