为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2023-09-19 14:17:51
我试图寻找我的问题的答案,但我还没有找到我的问题的解决方案,尽管我的问题似乎相当简单。例如,我想知道的是如何在同一位置有两个圆的中心点。我是初学者,所以请不要太严厉。
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我不太知道在尝试绘制这些圆圈时您有什么信息,因此假设您知道圆心和半径。这是一个非常好的起点,但是,正如其他人提到的,tkinter 需要所述圆的绑定框。

我发现用图表一切都更容易,所以这是一个:

https://img1.sycdn.imooc.com//65093d3b00015fc406520649.jpg

我们知道圆心的坐标(标记为“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/python3

CENTRE = (100, 100)

RADIUS1 = 20

RADIUS2 = 30

CENTRE_X, CENTRE_Y = CENTRE


import tkinter as tk


root = 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()

结果是画布中间有两个同心圆。


查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 40 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信