我创建了一个代码来显示我的问题。看起来像这样:
userNameID = tkinter.Label(root, text="Name/ID")
userNameID.place(x=640, y=320, anchor="e")
userNameID = tkinter.Label(root, text="Password")
userNameID.place(x=640, y=360, anchor="e")
entButton = tkinter.Button(root, text="Enter", command=enterPrint)
entButton.place(x=640, y=400, anchor="w")
问题是我把一些文本放在中心的一个尺寸上,按钮在另一边。我想知道文本的西北锚的位置,以确保所有内容与中心的距离相同,并且仍然对齐。在
grid()
和{place()
的使用几乎永远不是你所需要的。它有它的案例用途,但对于一般的GUI设置来说,它不是一个好的选择。更新代码也很难管理。在更新:在评论中回答您的问题:
权重用于指示特定行或列的大小应相对于同一网格/容器中它们周围的其他行和列按一定比例调整大小。默认权重为零。当我们将权重设置为1时,该行或列将以偶数速率调整窗口大小。在
以下面的代码为例:
结果:
在上面的示例中,您将看到当您调整窗口大小时,小部件不会移动。这是因为我们没有指示tkinter允许任何行或列移动。在
如果我们把这个权重加到程序中
root.rowconfigure(0, weight=1)
:然后我们得到这样的影响:
接下来添加这个
root.rowconfigure(2, weight=1)
:接下来添加这个
root.columnconfigure(0, weight=1)
:接下来添加这个
root.columnconfigure(2, weight=1)
:正如您在上面的图像中看到的,取决于您设置了权重的行和列,那么行和列将相应地调整大小。我们用上面的代码实现的是调整行0和行2的大小以及列0和列2的大小。
row 1 column 1
将不调整大小。所以这意味着我们放在row 1 column 1
位置的任何东西都不会调整大小,而是保持其相对于边界的相对位置。因为我们在row 1 column 1
位置设置了一个框架小部件,然后在框架内的所有小部件都有效地使row 1 column 1
成为中心。在有多少行和列就有多少。Tkinter会根据您所说的自动调整行和列的总数。除此之外,它还将使没有任何内容的行和列变成零大小。这意味着只有包含内容(小部件)的行和列才会影响网格的大小。在
假设我们有3行3列。根据我们的填充方式,它会改变显示内容的大小。在
在这个例子中,任何你看到的
X
显示我们在下面的行和列中放置了一些东西。在在这个例子中,我们有(0,0),(1,1)和(2,2)中的内容。在
^{pr2}$在这个例子中,我们在(0,0)和(2,2)中有一些东西。在
在这个例子中,我们有(1,0),(2,1)和(2,2)中的内容。在
上面的示例说明了根据小部件填充的行和网格,自动显示的内容。在
至于像
sticky
这样的参数是用来管理每个小部件的行为的。例如,如果我们告诉小部件填充给定行/列中的所有空间,那么我们将使用sticky="nsew"
。如果我们想让一个小部件在给定的行/列中水平拉伸而不是垂直拉伸,我们将使用sticky="ew"
表示东/西。请记住,sticky参数是针对grid()
。pack()
几何图形管理器有它自己的参数。在有许多选项,您可以在此处找到它们的列表及其说明:
For ^{}
For ^{}
以下面的例子为例。这段代码将在任何时候设置窗口的标签和按钮,即使你调整窗口的大小。这比地方容易管理得多。在
可以在几何图形管理器中使用许多有用的参数,以实现您希望的任何行为或对齐。花点时间好好研究一下。我知道
place()
感觉是最好的选择(在Bryan纠正这个概念之前,我第一次开始的时候也是这样想的:D),但实际上不是这样。在下面是一个使用}也可以用来完成很多工作。在
pack()
的示例。我发现grid()
是我的目标,但是{相关问题 更多 >
编程相关推荐