将 tkinter 模块的 Listbox 小部件中的每个元素放入单独的行单元格中

Place each element in a Listbox widget of tkinter module into separate row cell

我有一个列表框定义为:

listbox1=tk.Listbox(master=frame_1,listvariable=samples_var)

其中 samples_var 是一个 tk.StringVar() class ,其中包含样本列表。
例如:

samples=["A","B","C","D"]
samples_var=tk.StringVar(value=marko.samples)

然后我定义 tk.Listbox 使用:

listbox1=tk.Listbox(master=frame_1,listvariable=samples_var)

我通过调用网格将 listbox1 放在 frame_1 小部件上。然后我指定我希望它从 row=1,column=3 开始(因为左侧和顶部的其他单元格被占用),并且我希望它跨越的行数等于“样本”列表的长度.在上面的示例中,“样本”列表中有 4 个(因为有 A、B、C、D)。这应该使 ListBox 小部件正好跨越 len(samples) 行,从开始。

代码:

listbox1.grid(row=1,column=3,rowspan=len(samples),sticky="nsew")

有什么方法可以将列表的每个元素对齐到它自己的行吗?
例如: A 将在行=1,列=3,B 将在行=2,列=3,C 将在行=3,列=3,等等
我这样做是为了与列中的其余小部件很好地对齐。

Is there any way to snap each element of a list to its own row?

不,没有。 Tkinter 根本就不是为那样工作而设计的。列表中元素的高度完全独立于列表框可能属于的网格。

您可以尝试一些技巧,根据列表框的 bbox 命令的结果计算列表框中一行的高度,然后尝试将网格中每一行的高度强制为同样的尺寸,虽然看起来比它的价值要多得多。