【发布时间】:2017-06-13 03:01:36
【问题描述】:
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 中的列表中。
gameMap.tiles.Pos 是一个 2 元素列表,分别包含一个 int x 和 y 坐标。
gameMap.tiles.climate 是一个早先设置为八个选项之一的 str。
代码按预期运行。唯一的问题是方形 gif 被几个像素的空白包围,破坏了相互联系的错觉。如何更改网格布局以删除此空白?
附:我知道这段代码很笨重(例如 z 是完全没有必要的),但出于调试目的,我一直在迂回。当我能够删除此空白时,它将被修复。
【问题讨论】:
-
如果
z不是重现此问题所必需的,请将其从示例中删除。见minimal reproducible example。如果您描述您尝试过的内容,这也会有所帮助。小部件和网格命令都有许多记录在案的选项来控制边框、填充等。
标签: python tkinter grid removing-whitespace