繁体   English   中英

如何在tkinter中更改形状(即椭圆形)的坐标?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM