如何程序生成3列网格布局中元素的x、y定位坐标
实现方案
你可以通过取模运算和整数除法快速计算对应坐标,修改后的代码如下:
# 存储所有生成的widget对象 widget_list = [] # 固定每行3列 GRID_COL_COUNT = 3 for count, item in enumerate(response, 1): print(count) print(item.name) # 坐标计算 zero_based_index = count - 1 x = zero_based_index % GRID_COL_COUNT y = zero_based_index // GRID_COL_COUNT # 生成目标结构 widget = { "name": item.name, "xPos": str(x), "yPos": str(y) } widget_list.append(widget)
计算逻辑说明
- 由于
enumerate从1开始计数,先减1得到从0开始的索引,方便后续运算 - x坐标:对3取模,即可实现每3个元素循环输出0、1、2,对应同一行的3个列位置
- y坐标:对3做整数除法,每满3个元素结果加1,对应行号
如果你的业务场景中xPos、yPos需要使用数字类型而非字符串,直接去掉str()转换即可。
内容的提问来源于stack exchange,提问作者Simon Breton
相关产品推荐
相关产品推荐

