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是作为类Tile()的实例随机生成的,并附加到gameMap.tiles中的列表中。
gameMap.tiles.Pos是一个包含int x和y坐标的2元素列表。
gameMap.tiles.climate是早期的八个选项之一。
代码按预期运行。唯一的问题是方形GIF被几个像素的空白包围,破坏了相互关联的错觉。如何更改网格布局以删除此空格?
P.S。我知道这段代码很笨重(例如z完全没必要),但是我一直都很迂回以进行调试。当我能够删除这个空格时,它将被修复。
答案 0 :(得分:0)
创建标签时,设置highlightthickness=0
,同时如果z
是预定义的值列表,您可以创建图像字典,然后使用z
检索它作为关键,节省许多线路,也可能是清晰度。如果您不关心eval
的使用,那么您可以使用texture=eval(z.lower())
,从而无需使用不必要的if
语句。