2017-01-15 7 views
-1

私はtkinterウィンドウ内にボタンのグリッドを生成するこのコードを持っていますが、グリッド内のボタンを区別する方法はありません。グリッド位置(4,4)のボタンを青色にしたい場合、どうすればいいですか?リストを使用する必要がありますか?私はそれが速い修正であると確信しています、事前に感謝します。Python、tkinter:グリッド内のアイテムの位置を特定する方法は?

def game(width,height): 

    for x in range(width): 

     for y in range(height): 

      square = Button(gameWindow) 
      square.grid(column = x, row = (y + 1), sticky = (N+S+E+W)) 

    for x in range(width): 

     Grid.columnconfigure(gameWindow, x, weight = 1) 

    for y in range(height): 

     Grid.rowconfigure(gameWindow, (y + 1), weight = 1) 

    gameWindow.mainloop() 

game(8,8) 

答えて

0

、あなたはxy

from Tkinter import * 

def game(width,height): 
    for x in range(width): 
     # fill a row in the list 
     squares.append([None] * height) 

     for y in range(height): 
      squares[-1][y] = Button(gameWindow) 
      squares[-1][y].grid(column = x, row = (y + 1), sticky = (N+S+E+W)) 

    for x in range(width): 

     Grid.columnconfigure(gameWindow, x, weight = 1) 

    for y in range(height): 

     Grid.rowconfigure(gameWindow, (y + 1), weight = 1) 

squares = [] 
gameWindow = Tk() 

game(8,8) 

# change color of square in x=3, y=4 
squares[3][4].configure(bg='blue') 

gameWindow.mainloop() 
+0

あなたがこれを行う方法の例を挙げてもらえますか?私はリストに精通していない。おかげで –

+0

例で編集 –

+0

それは働いた!ご協力いただきありがとうございます! –

0

提案のインデックスにより、各オブジェクトを参照することができ、リストのリストにsquareオブジェクトを置く:あなたが視覚的に差別化を考えている場合 あなたはmike.kの提案に加えて、Buttonのbackground、activebackground、およびimageオプションを使用することができます。 activebackgroundオプションは、マウスポインタの位置とeasietの位置をコントラストします。さらに、賢いシステムを考案して、グリッドシステムとの関係で色を表示することができます。

は実装をデモするようにコードを修正した:コードから

from tkinter import * 

def game(width,height,gameWindow): 

    colors = ['green', 'blue', 'yellow', 'white', 
       'black', 'brown', 'purple', 'cyan'] 

    for x in range(width): 

     for y in range(height): 

      color = colors[y] 
      print('color = {}'.format(color)) 
      square = Button(gameWindow, background=color, 
          activebackground='gold') 
      square.grid(column = x, row = (y + 1), sticky = (N+S+E+W)) 

    for x in range(width): 
     Grid.columnconfigure(gameWindow, x, weight = 1) 

    for y in range(height): 
     Grid.rowconfigure(gameWindow, (y + 1), weight = 1) 

gameWindow = Tk() 
game(8,8, gameWindow) 
gameWindow.mainloop() 

結果: enter image description here

関連する問題