首页 > 解决方案 > 如果我知道 Tkinter 中的网格行和列,如何从给定的网格位置检索图像?

问题描述

我是 python GUI 的新手,我正在编写一个简单的游戏,其中涉及将图像从一个网格单元移动到另一个网格单元,并且我不必将图像堆叠在另一个图像之上。因此,要放置图像,我必须检查新位置是否为空。此外,图像只能垂直或水平移动。用户单击要移动的图像,然后单击放置图像的位置。我将每个图像放在一个 8x8 板上的标签中。为了检查移动是水平的还是垂直的,我检查源和目标的行号或列号是否分别相同。如果行号相同,例如从位置(行 = 2,列 = 1)到(行 = 2,列 = 4),我想循环从列 = 2 到列 = 4 的位置并检查是否有图像与否。如果在任何这些单元格中存在图像,即 (2,2,)、(2,3) 或 (2,4),则取消移动。但是关于网格的所有功能只显示如何获取列号和行号,但如果我已经知道行号和列号,则不提供有关如何获取值的任何信息。任何人都可以帮助解决问题吗?谢谢

标签: pythontkintergrid

解决方案


我相信您正在寻找的网格方法是grid_slaves(row, column).

w.grid_slaves(row=None, column=None) 返回由小部件 w 管理的小部件列表。如果未提供任何参数,您将获得所有托管小部件的列表。使用 row= 参数仅选择一行中的小部件,或使用 column= 参数仅选择一列中的小部件。

请注意,尽管文档声明使用 row=column=,但实际上,您可以同时指定两者并在单个网格单元格中获取小部件。作为frame容器小部件(网格所在的位置),调用frame.grid_slaves(row=3, column=2)将为您提供该网格单元中的小部件列表(或带有单个项目的列表,如果那里只有一个小部件)或空列表,如果有没有任何。


推荐阅读