2016-03-26 10 views
1

Heres my code。私はgraphics.py zelleを使っています。私の目的は、複数のオブジェクト(複数のオブジェクト)を作成することですが、10以上を描画すると醜いことがあります。私はちょうどオブジェクトを1つずつ作成せずにhelper_function()のコードをどのように単純化するのだろうかと思っていましたか?異なる色を含む。複数のオブジェクトを作成するグラフィック

def main_function(): 
     win = GraphWin ("Example" , 1000,1000) 
     win.setBackground("green") 

def helper_function(): 
     b = Circle(Point(50,50),20) 
     b.setFill("blue") 
     b.draw(win) 

     b = Circle(Point(50,100),20) 
     b.setFill("blue") 
     b.draw(win) 

     b = Circle(Point(50,150),20) 
     b.setFill("blue") 
     b.draw(win) 

     g = Circle(Point(300,50),20) 
     g.setFill("green") 
     g.draw(win) 

     g = Circle(Point(350,50),20) 
     g.setFill("green") 
     g.draw(win) 

     g = Circle(Point(400,50),20) 
     g.setFill("green") 
     g.draw(win) 

     g = Circle(Point(450,200),20) 
     g.setFill("green") 
     g.draw(win) 
+0

x、y、および色の値を含むディクテーションのリストを作成し、それをループすることができます。 – Selcuk

答えて

0

次のように作成したオブジェクトに上のx、y、半径と色が含まれているタプルのリストとループを作成し、一般的な方法を適用することができます。

from graphics import * 

def main_function(): 
    win = GraphWin ("Example" , 1000,1000) 
    win.setBackground("green") 
    circle_params = [(50, 50, 20, "blue"), 
        (50 ,100, 20, "blue"), 
        (50,100, 20, "green"), 
        (300,50, 20, "green"), 
        (350,50, 20, "green"), 
        (400,50, 20, "green"), 
        (450,50, 20, "green"), 
        ] 
    helper_function(win, circle_params) 

def helper_function(win, circle_params): 
    for param in circle_params: 
     a = Circle(Point(param[0], param[1]), param[2]).setFill(param[3]).draw(win) 

OR:

def helper_function(win, circle_params): 
    circle_obj_lst = [Circle(Point(param[0], param[1]), param[2]).setFill(param[3]).draw(win) for param in circle_params] 

OR

def helper_function(win, circle_params): 
    circle_obj_lst = map(lambda param:Circle(Point(param[0], param[1]), param[2]).setFill(param[3]).draw(win) ,circle_params) 

これが助けてくれるといいでしょう:)

関連する問題