在tkinter中以椭圆形图案移动圆圈

时间:2016-06-04 18:05:03

标签: python tkinter geometry ellipse

好的,所以我想用tkinter中的按钮以椭圆形图案移动圆圈。我以前让它一次来回移动10px,但我不知道如何让它在椭圆形中移动

我的来回代码如下:

from Tkinter import *

def ball(gd, hb):
    global x1, y1
    x1, y1 = x1+gd, y1+hb
    can1.coords(oval1,x1, y1, x1+30, y1+30)

def move():
    global direction
    if x1 + 30 == 250:
        direction = -1
    elif x1 == 0:
        direction = 1
    ball(direction*10, 0)

x1 , y1, direction = 0, 125, 1

root = Tk()

can1 = Canvas(root,height = 250, width =250, bg = 'black')
oval1= can1.create_oval(x1,y1,x1+30,y1+30, width=2, fill='orange')
can1.pack()
Button(root, text ='Move Ball', command = move).pack()

root.mainloop()

任何想法都会对我有所帮助,我只需指出正确的方向

1 个答案:

答案 0 :(得分:0)

选项1

好的,如果你的意思是你只想要一个椭圆形状,你可以使用x1,y1,x1+60,y1+30而不是x1 + 30,y1 + 30。

选项2

如果你打算像球反弹那样重塑球,你必须考虑一些因素。

  • 什么时候应该发生。 =>方向改变
  • 我需要修改什么=>基于:how a oval shape is defined你可以很容易地说,如果球接触到max width(在你的情况下是x = 250)你必须伸出相反的坐标(oval1, x1 y1 ,x1 + 60,y1 + 30),y1被忽略,因为你只是在x轴上移动。
  • 我如何伸展=>见我的图片

    它还表明您可以使用鼻窦来达到您想要的效果。就像将他添加到所需坐标之上一样。因此,“Point”应该移动得更快,在顶部添加窦可能就可以了。

    enter image description here

    这是我的想法。只是一个快速的。也许明天我会找到一个更好的。如果您有任何疑问,请发表评论。