import Tkinter as Tk
master = Tk.Tk()
water = Tk.PhotoImage(file="water.gif")
desert = Tk.PhotoImage(file="desert.gif")
tundra = Tk.PhotoImage(file="tundra.gif")
forest = Tk.PhotoImage(file="forest.gif")
plains = Tk.PhotoImage(file="plains.gif")
swamp = Tk.PhotoImage(file="swamp.gif")
mountains = Tk.PhotoImage(file="mountains.gif")
island = Tk.PhotoImage(file="island.gif")
labels = []
for i in gameMap.tiles:
x = i.Pos[0]
y = i.Pos[1]
z = i.climate
if z == "Water":
texture = water
elif z == "Desert":
texture = desert
elif z == "Tundra":
texture = tundra
elif z == "Forest":
texture = forest
elif z == "Plains":
texture = plains
elif z == "Mountains":
texture = mountains
elif z == "Swamp":
texture = swamp
elif z == "Island":
texture = island
label = Tk.Label(master, image=texture)
labels.append([label, x, y])
for i in labels:
i[0].grid(row=i[1], column=i[2])
master.mainloop()
これは、表示ウィンドウを生成するループをカバーするコードスニペットです。意図は、ランダムに生成されたマップを表す正方形の画像のグリッドを生成することです。コードの最初の部分では、タイルはクラスTile()のインスタンスとしてランダムに生成され、gameMap.tilesのリストに追加されます。tkinterグリッドの余分なスペースを削除する
gameMap.tiles.Posは、それぞれx座標とy座標を含む2要素リストです。
gameMap.tiles.climateは、以前の8つのオプションのいずれかに設定されたstrです。
コードは意図した通りに機能します。唯一の問題は、四角形のgifが数ピクセルの空白で囲まれているため、相互接続の錯覚が損なわれていることです。この空白を削除するにはどうすればグリッドレイアウトを変更できますか?
P.S.私は、このコードセグメントが厄介であることを認識しています(例えば、zは全く必要ありません)。しかし、私はデバッグの目的でラウンドアバウトしています。この空白を削除できるときに修正されます。あなたのラベルを作成し、highlightthickness=0
を設定
この問題を再現するために 'z'を必要としない場合は、例から削除してください。 [mcve]を参照してください。また、あなたが試したことを記述すると助けになります。ウィジェットとグリッドコマンドには、ボーダー、パディングなどを制御する多くの文書化されたオプションがあります。 –