2017-02-04 7 views
0

私はPythonでボックスの列を持っており、奇数番号の各行には10ピクセルオフセットする必要があります。これに近づける最善の方法は、モジュラスを使ってif/else文を使うことですか? オブジェクトの列に描画パネルのオフセットを与えるにはどうすればよいですか?

これらは箱である:ここでは追加条件付き実装するいくつかの方法だ

for j in range(0, 6): 
    for i in range(0, 3): 
     p.canvas.create_rectangle(
      x + 50 * i + 25, y + j * 25, x + 50 * i, y + 25 * j + 25, 
      fill="black", width=0) 
     p.canvas.create_rectangle(
      x + 50 * i + 50, y + j * 25, x + 50 * i + 25, y + 25 * j + 25, 
      fill="white", width=0) 
+0

奇数番号の行( 'j%2!= 0:'なら 'j%2:'なら 'j%2:')だけのx値に10を加えてください。 – martineau

+0

助けてくれてありがとう!私はどのようにPythonに "do not do it"と言うのですか? – excentrixz

答えて

0

Xオフセット偶数または奇数の行が描画されているかどうかに基づいて、矩形に:

xoffset = 10 
for j in range(6): 
    for i in range(3): 
     rect1 = p.canvas.create_rectangle(x + 50*i  , y + 25*j, 
              x + 50*i + 25, y + 25*j + 25, 
              fill="black", width=0) 
     rect2 = p.canvas.create_rectangle(x + 50*i + 25, y + 25*j, 
              x + 50*i + 50, y + 25*j + 25, 
              fill="white", width=0) 
     if j % 2: # odd row? 
      p.canvas.move(rect1, xoffset, 0) 
      p.canvas.move(rect2, xoffset, 0) 
#  else: 
#   pass # don't do anything 

for j in range(6): 
    xoffset = 10 if j % 2 else 0 # odd-numbered rows are offset 

    for i in range(3): 
     p.canvas.create_rectangle(x + 50*i + 25 + xoffset, y + 25*j, 
            x + 50*i  + xoffset, y + 25*j + 25, 
            fill="black", width=0) 
     p.canvas.create_rectangle(x + 50*i + 50 + xoffset, y + 25*j, 
            x + 50*i + 25 + xoffset, y + 25*j + 25, 
            fill="white", width=0) 

別のアプローチは、長方形を作成するときに手動で、Xオフセット値を追加することであろう

screenshot of output produced

注最初のペアになるように、最初の例では、私はcreate_rectangle()に渡されたxとyの値の順序を変更したこと:いずれかの方法は、ここでの出力がどのように見えるかのサンプルですその領域の左上の座標であり、2番目のものは、documentationが言うべきものに合致するように、右下です。 (位置0、0は正のx軸が右に移動し、正のy軸は下方に行くと右上隅である。)

tkinterに「drawingpanelが」Canvasウィジェット(と呼ばれることに注意してください絵画、特に油絵が描かれている織物に類似している)。

+0

これは本当に私を助けて素晴らしい!ありがとう – excentrixz

+0

それを聞いてうれしいです。その場合は、私の答えを受け入れてください。 – martineau

関連する問題