2017-10-26 6 views
0
def draw_pattern(a_canvas, size, pattern_str_list): 
    x0 = size 
    x1 = x0 + size 
    y0 = size 
    y1 = y0 + size 

    for word in pattern_str_list: 
     for char in word: 

     if char == "A": 
      a_canvas.create_oval(x0,y0,x1,y1,fill = "gray") 
      x0 = x0 + size 
      x1 = x0 + size 
     if char == "B": 
      a_canvas.create_oval(x0,y0,x1,y1,fill = "red") 
      x0 = x0 + size 
      x1 = x0 + size 
     if char == "C": 
      a_canvas.create_oval(x0,y0,x1,y1,fill = "blue") 
      x0 = x0 + size 
      x1 = x0 + size 
     if char == "D": 
      a_canvas.create_oval(x0,y0,x1,y1,fill = "green") 
      x0 = x0 + size 
      x1 = x0 + size 
     if char == "_": 
      a_canvas.create_oval(x0,y0,x1,y1,fill = "black") 
      x0 = x0 + size 
      x1 = x0 + size 


     y0 += size 

こんにちは、私は文字列のリストを取得し、そこからデータを取り出し、横にある行を横に並べるプログラムを作成しようとしています何がリストにあるかに応じて、tkinterウィジェットを介してお互いに。 a_canvasが大きな正方形のグリッド、size = 50pattern_str_list = (ABC, D_A, BB__A_D)であるとします。リストを反復して正しい色の円を表示し、リストの次の項目の下の行に移動するにはどうすればよいですか?python - コードを繰り返してtkinterの図形に実装する

グレー赤、青

グリーンブラックグレーTkinterの上

赤、赤、黒、緑、グレー

に着色丸:

は、基本的にそれはのように見えますか?

+0

スニペットがそれを行っている、あなたの質問は今何ですか? – Sraw

+0

1行目と3行目が表示されますが、2行目はまだ1行目の行ですが、実行すると機能しません。 – verdy

+0

これをデバッグするために何をしましたか? 'word'、' char'、 'size'、' x0'、 'y0'、' x1'、 'y1'はあなたが彼らと思っていることを確認しましたか? –

答えて

0

サイズのためにこれを試してみてください上:

def draw_pattern(a_canvas, size, pattern_str_list): 
    colours = {"A":"gray", "B":"red", "C":"blue", "D":"green"} 
    x = size 
    y = size 

    for word in pattern_str_list: 
     for char in word: 
      a_canvas.create_oval(x, y , x + size, y + size, fill=colours.get(char, "black")) 
      x += size 
     y += size 
関連する問題