2017-06-11 18 views
-1
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を設定

+0

この問題を再現するために 'z'を必要としない場合は、例から削除してください。 [mcve]を参照してください。また、あなたが試したことを記述すると助けになります。ウィジェットとグリッドコマンドには、ボーダー、パディングなどを制御する多くの文書化されたオプションがあります。 –

答えて

0

は、またzは、定義済みの値のリストであることを提供し、あなたは画像の辞書を作成し、その後、キーとしてzを使用して多くの行を保存しても、おそらく明快ことを取り出すことができ。 evalの使用に関心がない場合は、texture=eval(z.lower())を使用して、不要なifステートメントの必要性を取り除くことができます。

関連する問題