删除tkinter网格中的多余空间

时间:2017-06-11 21:39:25

标签: python tkinter grid removing-whitespace

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完全没必要),但是我一直都很迂回以进行调试。当我能够删除这个空格时,它将被修复。

1 个答案:

答案 0 :(得分:0)

创建标签时,设置highlightthickness=0,同时如果z是预定义的值列表,您可以创建图像字典,然后使用z检索它作为关键,节省许多线路,也可能是清晰度。如果您不关心eval的使用,那么您可以使用texture=eval(z.lower()),从而无需使用不必要的if语句。