【问题标题】:In Python create a circle With two mouse clicks在 Python 中通过两次鼠标点击创建一个圆圈
【发布时间】:2016-02-28 14:21:30
【问题描述】:

我需要使用 Python 创建一个有五个环(黄、红、蓝、黑、白)的射箭目标

它需要第一次点击鼠标来选择中心环的位置。

第二次鼠标单击将指示内圆圆周上的某个位置。

其余环(红、蓝、黑、白)的宽度需要与内圆半径相同。

我无法弄清楚如何从第二次鼠标单击中获取信息并将其提供给内圈以找到它的半径。

from graphics import *



def main():
    win = GraphWin('Archery Target',300,300)
    center = win.getMouse()


    w = Circle(center, 100)
    w.setFill('white')
    w.draw(win)

    bl = Circle(center, 80)
    bl.setFill('black')
    bl.draw(win)

    b = Circle(center, 60)
    b.setFill('blue')
    b.draw(win)

    r = Circle(center, 40)
    r.setFill('red')
    r.draw(win)

    y = Circle(center, 20)
    y.setFill('yellow')
    y.draw(win)

    win.getMouse() # pause for click in window
    win.close()

main()

此代码只是让您决定中心的位置,但只有一个环尺寸。

final output

【问题讨论】:

  • 所以您希望在第一次点击之后的每一次点击都确定下一个圆圈的大小?
  • 如果你问“如果我只知道圆心的坐标和圆周上的一个点,我如何找到圆的半径?”,这是它们之间的距离,由下式确定毕达哥拉斯公式。
  • 程序只能接受两次点击,中心和内圆圆周上的一个点。一旦你得到这两次点击,那么我们需要找到内圆的半径。然后所有其余环的宽度都等于内圆的半径。当我所拥有的只是第一次和第二次点击的绳索时,我基本上需要找出如何在 'y=circle(center,x)' 中评估 x。

标签: python user-interface python-3.x graphics


【解决方案1】:

假设您加载的 graphics 模块是 John Zelle 的模块(找到 例如 here),那么您需要的是另一点

point = win.getMouse()

然后,正如@Kevin 建议的那样,用毕达哥拉斯公式计算你的点之间的距离(需要from math import sqrt

dx = point.getX() - center.getX()
dy = point.getY() - center.getY()
radius = sqrt(dx*dx + dy*dy)

然后您可以使用radius 绘制您的圈子。

如果这不能解决您的问题,请提供更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2013-12-27
    • 2020-12-26
    • 2017-10-06
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多