我有一个小的(实际上很大的)任务需要照顾,我想知道是否有人可以帮我解决这个问题。我曾几次寻找答案,但没有成功
(http://s24.postimg.org/89r1zmgl1/Untitled.png)< ---椭圆
我想在椭圆上显示任意数量的圆圈,您可以在上面的链接上看到。椭圆和圆都用Tkinter定义。
class NetworkFrame:
def __init__(self, master, number_of_people):
DisplayFrame = Canvas(master, bg="white", width=720, height=300)
DisplayFrame.grid(row=0, columnspan=7, column=0, sticky='W', padx=5, pady=5)
DisplayFrame.create_oval(20, 20, 700, 280, width=1)
所以我的想法是 - 用户输入一定的数字(number_of_people),它会使椭圆定义的路径上出现一定数量的圆圈,均匀分布并对称放置。
理想情况下,这就是我想要发生的事情,因此我可以将其调整为我之前定义的任何形状,但如果有另一种方法使它们看起来遵循椭圆路径,那么它也是可以接受的。
感谢您的时间!
答案 0 :(得分:1)
如果有人需要这个,我可以通过Kevin发布的链接设法做到这一点!
以下是它的工作原理
def __init__(self, master, number_of_people, node_size):
a = 350
b = 140
ellipsePoints = [(a * cos(theta), b * sin(theta))
for theta in (pi*2 * i/number_of_people for i in range(number_of_people))]
DisplayFrame = Canvas(root, bg="white", width=725, height=320)
DisplayFrame.grid(row=0, columnspan=7, column=0, sticky='W', padx=5, pady=5)
for i in range(number_of_people):
DisplayFrame.create_oval(ellipsePoints[i][0]+355, ellipsePoints[i][1]+155,
ellipsePoints[i][0]+355+node_size, ellipsePoints[i][1]+155+node_size, fill="red")