def redCircles():
win = GraphWin("Patch2" ,100,100)
for x in (10, 30, 50, 70, 90):
for y in (10, 30, 50, 70, 90):
c = Circle(Point(x,y), 10)
c.setFill("red")
c.draw(win)
這是我的代碼和輸出應該是這樣的:我怎樣才能讓我的圈子變成白色?
def redCircles():
win = GraphWin("Patch2" ,100,100)
for x in (10, 30, 50, 70, 90):
for y in (10, 30, 50, 70, 90):
c = Circle(Point(x,y), 10)
c.setFill("red")
c.draw(win)
這是我的代碼和輸出應該是這樣的:我怎樣才能讓我的圈子變成白色?
只是測試這一點,它爲我工作。
from graphics import *
def redCircles():
win = GraphWin("Patch2" ,100,100)
for x in (10, 30, 50, 70, 90):
for y in (10, 30, 50, 70, 90):
c = Circle(Point(x,y), 10)
d = Circle(Point(x,y), 10)
if x in (30, 70):
r = Rectangle(Point(x - 10, y), Point(x + 10, y + 10))
else:
r = Rectangle(Point(x - 10, y- 10), Point(x, y + 10))
c.setFill("red")
d.setOutline("red")
r.setFill("white")
r.setOutline('white')
c.draw(win)
r.draw(win)
d.draw(win)
if __name__=='__main__':
redCircles()
我們繪製實心圓,然後繪製其中一半以上的矩形,然後勾勒圓形以獲得輪廓。 if檢查我們所在的列。
謝謝你,我已經在python(y) – 2014-12-03 19:24:29
以下是我對@ JaredWindover解決方案進行修改後的(臃腫)返工。首先,利用Zelle的clone()
方法,在嵌套循環之前完成儘可能多的圖形對象設置。其次,它修復了一個小問題,很難在小圓圈中看到,其中一半的輪廓是黑色而不是紅色。最後,與Jared的解決方案和OP的代碼,它是可擴展的:
from graphics import *
RADIUS = 25
def redCircles(win):
outline_template = Circle(Point(0, 0), RADIUS)
outline_template.setOutline('red')
fill_template = outline_template.clone()
fill_template.setFill('red')
horizontal_template = Rectangle(Point(0, 0), Point(RADIUS * 2, RADIUS))
horizontal_template.setFill('white')
horizontal_template.setOutline('white')
vertical_template = Rectangle(Point(0, 0), Point(RADIUS, RADIUS * 2))
vertical_template.setFill('white')
vertical_template.setOutline('white')
for parity, x in enumerate(range(RADIUS, RADIUS * 10, RADIUS * 2)):
for y in range(RADIUS, RADIUS * 10, RADIUS * 2):
fill = fill_template.clone()
fill.move(x, y)
fill.draw(win)
if parity % 2 == 1:
rectangle = horizontal_template.clone()
rectangle.move(x - RADIUS, y)
else:
rectangle = vertical_template.clone()
rectangle.move(x - RADIUS, y - RADIUS)
rectangle.draw(win)
outline = outline_template.clone()
outline.move(x, y)
outline.draw(win)
if __name__ == '__main__':
win = GraphWin('Patch2', RADIUS * 10, RADIUS * 10)
redCircles(win)
win.getMouse()
win.close()
而不是使用'Circle'的,創建兩個'Polygon'對象每個代表半圈,並填寫一個紅色和其他與白。或者,您可以用紅色填充整個「圓形」,然後創建一個白色的「多邊形」對象,表示您想要填充白色的一半。 – martineau 2014-12-03 15:24:47
@martineau這是一個任務,[這裏是最近的一個上一個問題](http://stackoverflow.com/q/27137304/2749397) – gboffi 2014-12-03 15:29:15
@gboffi,我應該刪除我的答案嗎?我剛剛看到您的評論。 – 2014-12-03 15:31:50