如何使用Python中的Tkinter几何体?

2024-06-23 18:56:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直很难理解Tkinter的几何结构。我有一系列的问题,我希望有人能帮我澄清。在

当在下面的代码中制作矩形时,我传入了4个参数。我知道它们是x1,y1,x2,y2参数,但这到底是怎么工作的呢?我似乎无法创建一个特定大小的矩形并将其精确地放置在我想要的位置。另外,第三个和第四个参数中的20+20是什么意思?在

如何检测特定坐标?我希望能够检测到屏幕上的线条,并在矩形接触到它时执行基于代码的代码,但我不知道。我也不能把这条线放在我想强调的位置,因为我得到的Tkinter的几何图形太少了。在

window = Tk()
window.geometry("400x200+450+300")

canvas1 = Canvas(window, width = 600, height = 300, bg='white')
canvas1.pack()
canvas1.create_line(25, 50, 50, 50)

robot = canvas1.create_rectangle(10, 10, 20+20, 20+20)

x1, y1, x2, y2 = canvas1.coords(robot)

def right(event):
    x1, y1, x2, y2 = canvas1.coords(robot)
    canvas1.coords(robot, x1+10, y1, x2+10, y2)

def left(event):
    x1, y1, x2, y2 = canvas1.coords(robot)
    canvas1.coords(robot, x1-10, y1, x2-10, y2)

def up(event):
    x1, y1, x2, y2 = canvas1.coords(robot)
    canvas1.coords(robot, x1, y1-10, x2, y2-10)


def down(event):
    x1, y1, x2, y2 = canvas1.coords(robot)
    canvas1.coords(robot, x1, y1+10, x2, y2+10)



canvas1.focus_set()
canvas1.bind("<Right>", right)
canvas1.bind("<Left>", left)
canvas1.bind("<Up>", up)
canvas1.bind("<Down>", down)

谢谢你的帮助。在


Tags: 代码event参数bindtkinterdefrobotcoords
1条回答
网友
1楼 · 发布于 2024-06-23 18:56:37

Tkinter画布坐标从画布左上角的0,0开始。当X变大时,点移到。当Y变大时,点向下移动。在

考虑这一行代码:

robot = canvas1.create_rectangle(10, 10, 20+20, 20+20)

这将创建一个由坐标(10,10)和(40,40)组成的矩形。从左上角开始,tkinter将向上计数10个像素,向下计数10个像素,以绘制矩形的第一个角点。矩形的对角是(40,22)。它看起来像这样(不按比例):

^{pr2}$

Tkinter将通过计算(40,10)和(10,22)处的缺角来创建一个矩形

  point 1 (10,10)
    +       +
    |              |
    |              |
    +       +
                 point 2 (40,40)

至于第二个问题(实际上应该是一个单独的问题),您可以确定一个对象是否与canvasfind_overlapping方法重叠。在

相关问题 更多 >

    热门问题