猿问

如何使用 tkinter 为形状分配不同的点?

我试图寻找我的问题的答案,但我还没有找到我的问题的解决方案,尽管我的问题似乎相当简单。例如,我想知道的是如何在同一位置有两个圆的中心点。我是初学者,所以请不要太严厉。



四季花海
浏览 71回答 1
1回答

慕无忌1623718

我不太知道在尝试绘制这些圆圈时您有什么信息,因此假设您知道圆心和半径。这是一个非常好的起点,但是,正如其他人提到的,tkinter 需要所述圆的绑定框。我发现用图表一切都更容易,所以这是一个:我们知道圆心的坐标(标记为“C”)和半径(由“C”附近的两条线表示——长度均为“r”)。我要做的第一件事是将“C”的坐标拆分为不同的变量,我将其称为 x c和 y c(分别表示 x 和 y 值)。接下来,我将把 A 分成它的 x 和 y 值( x a和 y a)。正方形(我们的装订框)的边缘在水平和垂直方向(直接在中心的左、右、上方或下方)与圆相交。首先考虑水平方向,因此我们知道 x a是 x c减去半径。同样,我们可以说 y a是 y c减去半径(使用 tkinter 画布坐标 - 从左上角到右下角,而不是从左下角到右上角)。同样,以类似的方式,我们可以说 x b和 y b(B 的 x 和 y 值)是 x c和 y c加上半径。将坐标值组合在一起,我们得到:A = (xc - r, yc - r)B = (xc + r, yc + r)这些是绑定框的坐标,因此我们可以将它们直接传递给 tkinter:#/usr/bin/python3CENTRE = (100, 100)RADIUS1 = 20RADIUS2 = 30CENTRE_X, CENTRE_Y = CENTREimport tkinter as tkroot = tk.Tk()c = tk.Canvas(root, width=200, height=200)c.pack()c.create_oval(CENTRE_X - RADIUS1, CENTRE_Y - RADIUS1,              CENTRE_X + RADIUS1, CENTRE_Y + RADIUS1)c.create_oval(CENTRE_X - RADIUS2, CENTRE_Y - RADIUS2,              CENTRE_X + RADIUS2, CENTRE_Y + RADIUS2)root.mainloop()结果是画布中间有两个同心圆。
随时随地看视频慕课网APP

相关分类

Python
我要回答