小部件都在一行中,我不希望它们

时间:2017-07-27 13:38:20

标签: tkinter

所有小部件都出现在一行中?我怎么阻止这个?我需要在不同的行上使用不同的小部件。我查了一遍,所有的例子都像我的代码,但我的代码仍然不能正常工作

#Placing widgets
Label1.grid(row = 0, column = 1, rowspan = 100)
FutureButton.grid(row = 3, column = 2, rowspan = 3)
ResetButton.grid(row = 3, column = 3, rowspan = 2, padx = 10)

window.mainloop()

1 个答案:

答案 0 :(得分:1)

  

所有小部件都出现在一行中?我怎么阻止这个?

答案是“不要把它们放在同一行”。您已明确将FutureButtonResetButton放在同一行。

您对rowspan的使用也会导致问题。例如,当您将Label放在第0行且行距为100时,它将在100行使用的空间中居中。由于大多数行都是空的,因此它们不会出现,但净效应是Label1最终以行0,1和2使用的空间为中心。这使得它看起来好像它们位于同一行。

可视化网格的一种简单方法是在您使用的每一行和一列中放置一些内容。由于您的原始代码有100列和4行,您可以执行以下操作:

for row in range(100):
    for column in range(4):
        f = tk.Frame(root, background="bisque", width=2, height=2)
        f.grid(row=row, column=column, sticky="nsew", padx=2, pady=2)

当我执行上述操作时,我得到的图像看起来如下图所示。请注意,没有任何小部件实际位于同一行,它只在原始代码中显示,因为大多数行都是空的。

screenshot showing 100 rows and 4 columns

最简单的解决方案是将它们放在同一行,而使用rowspan

Label1.grid(row = 0, column = 1)
FutureButton.grid(row = 1, column = 2)
ResetButton.grid(row = 2, column = 3, padx = 10)