【问题标题】:Remove excess space in tkinter grid删除 tkinter 网格中的多余空间
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2023-03-08
    • 2013-08-06
    • 2016-05-19
    • 1970-01-01
    • 2023-01-16
    • 2019-03-03
    相关资源
    最近更新 更多