2016-04-13 5 views
0

私が作成している円の半径は、先に作成した線の長さの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' 
を取得

サークルの半径を得るために一緒に分けることができるものに変更する方法がわかりません。どんな助け? (これが何かを意味する場合)

答えて

0

コード全体で数回、.getXまたは.getYを使用します。つまり、xyの代わりに関数getXgetYが得られます。

これを修正するには、()で関数を呼び出します。

あなたのエラーの現在の原因これらの行です:に

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

ます。また、行を変更する必要が

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

circleX = circleClick.getX 
circleY = circleClick.getY 
は、それらを切り替え

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

この行は現在問題を引き起こしていませんが、最初のバグを修正すると変更されます。

+0

私は実際にあなたが作業しているライブラリに精通していないので、わかりません。 CircleにはsetFill()メソッドがありますか?それは三角形の色を設定するために使用するように見えます。 – vtl

+0

ああ申し訳ありませんが、私はそれを考え出したので、コメントを削除しました。 setFill()の内部をsetFill(color.getText)に変更する必要があります) – LufiaCloud