无法通过分割直线长度并将其设置为半径来生成圆半径

2024-09-30 14:31:18 发布

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

我需要将我正在制作的圆的半径设置为先前制作的直线长度的1/4

win = GraphWin("Interactive Drawing",300,300)
win.setCoords(0,0,300,300)

##Create instruction to click the corners of the rectangle
instruction1 = Text(Point(104,10), "Click for lower left of rectangle")
instruction1.draw(win)
lowerLeft = win.getMouse()
instruction1.undraw()
instruction2 = Text(Point(100,10), "Click upper right of rectangle")
instruction2.draw(win)
upperRight = win.getMouse()
instruction2.undraw()

##Draw 2 triangles to form a multicolor rectangle from given points

rightX = upperRight.getX()
rightY = upperRight.getY()

leftX = lowerLeft.getX()
leftY = lowerLeft.getY()

leftZ = rightY - leftY
leftB = leftY + leftZ

rightZ = rightY - leftZ

point1 = Point(leftX,leftY)
point2 = Point(leftX,leftB)
point3 = Point(rightX,rightY)
point4 = Point(rightX,rightZ)


leftTriangle = Polygon(point1,point2,point3)
leftTriangle.draw(win)
leftTriangle.setFill("Purple")

rightTriangle = Polygon(point1,point3,point4)
rightTriangle.draw(win)
rightTriangle.setFill("Green")

##Get Circle point from mouse and draw 4 from point

color = Entry(Point(90,30),19)
color.setText("Enter Color Name Here")
color.draw(win)
instruction3 = Text(Point(114,10), "Click location after entering color")
instruction3.draw(win)
circleClick = win.getMouse()
instruction3.undraw()

circleX = circleClick.getX
circleY = circleClick.getY
circleCenter = Point(circleX,circleY)

radius = ((rightY - leftY)/4)

circle1 = Circle(circleCenter, radius)
circle1.draw(win)
circle2 = Circle(300 - circleClick.getX, 300 - circleClick.getY,radius)
circle2.draw(win)

当我运行该程序时,我能够制作矩形,但是当要求鼠标点击点作为圆的中心并试图绘制它时,我得到了错误

  File "C:/Users/Ian/Documents/Python Projects/InputDrawing.py", line 68, in main
    circle1 = Circle(circleCenter, radius)
  File "C:\Users\Ian\AppData\Local\Programs\Python\Python35-32\lib\graphics.py", line 599, in __init__
    p1 = Point(center.x-radius, center.y-radius)
TypeError: unsupported operand type(s) for -: 'method' and 'float'

我不知道如何将它们转换成可以一起分割得到圆半径的东西。有什么帮助吗(如果这有意义的话(哈哈)


Tags: oftextwincolorpointdrawcircleradius
1条回答
网友
1楼 · 发布于 2024-09-30 14:31:18

在整个代码中有几次使用.getX.getY。这意味着您得到的是函数getXgetY,而不是值xy

要解决此问题,请使用()调用函数

当前导致错误的原因是以下几行:

circleX = circleClick.getX
circleY = circleClick.getY

切换到:

circleX = circleClick.getX()
circleY = circleClick.getY()

您还需要更改行:

circle2 = Circle(300 - circleClick.getX, 300 - circleClick.getY,radius)

致:

circle2 = Circle(300 - circleClick.getX(), 300 - circleClick.getY(),radius)

这一行目前不会给您带来问题,但一旦您修复了第一个bug,它就会出现

相关问题 更多 >