Python tkinter.pack(anchor=";s";)函数不';行不通

Python tkinter.pack(anchor=";s";)函数不';行不通,python,tkinter,Python,Tkinter,首先,它向用户显示几个复选框,询问用户他们在哪里 想把它放在他们的屏幕上 这些选项如下:东北部、西北部、东南部和西南部,然后将其带到另一个函数,该函数(我测试了当勾选正确的VAR时,结果是否为1而不是0)因此vars2(西北部)、vars3(东北部)、vars4(东南部)和vars5(西南部)所有的工作和制作都进入西北、东北、东南、西南,然后最终在屏幕上用户指定的位置显示 我对它进行了几次测试,所有的东北/西部似乎都能正常工作,但当涉及到东南/西部时,它出现在与东北/西部相同的位置,这与预期的不

首先,它向用户显示几个复选框,询问用户他们在哪里 想把它放在他们的屏幕上

这些选项如下:东北部、西北部、东南部和西南部,然后将其带到另一个函数,该函数(我测试了当勾选正确的VAR时,结果是否为1而不是0)因此vars2(西北部)、vars3(东北部)、vars4(东南部)和vars5(西南部)所有的工作和制作都进入西北、东北、东南、西南,然后最终在屏幕上用户指定的位置显示

我对它进行了几次测试,所有的东北/西部似乎都能正常工作,但当涉及到东南/西部时,它出现在与东北/西部相同的位置,这与预期的不一样。我同时尝试了.grid()和.pack(),得到了相同的结果

def shoall(vars2, vars3, vars4, vars5):
    global g
    global askwhere
    nw = vars2.get()
    ne = vars3.get()
    se = vars4.get()
    sw = vars5.get()
    total = sw+se+nw+ne
    if total >1 or total ==0:
        error.showerror("One","Please select one")
    else:
        g+=1
        if nw ==1:
            wheres = "nw"
            askwhere.destroy()
            allsa(wheres)
        if ne ==1:
            wheres = "ne"
            askwhere.destroy()
            allsa(wheres)
        if se ==1:
            wheres = "se"
            askwhere.destroy()
            allsa(wheres)
        if sw==1:
            wheres="sw"
            askwhere.destroy()
            allsa(wheres)
就像布莱恩·奥克利提到的:
我将整个代码改为使用
side=“top”
anchor=“n”
,解决了定义标签时使用anchor的问题

Lebal = Label(login, text=alla, anchor=wheres)
可以指定东西方向的位置


只有当标签足够大时,south才会起作用

尝试将最后一行更改为

Lebal.pack(anchor=s)

因此,基本上不在哪里,而只是s

pack
通过沿主控中空白空间的一侧分配空间来工作。
选项采用“顶部”、“底部”、“左侧”或“右侧”中的一个。默认值为“顶部”。因此,如果不指定一侧,小部件将被放置在空白空间的顶部

默认情况下,分配的空间将刚好足够容纳小部件。如果一侧为“顶部”或“底部”,则分配的空间将仅足够高以容纳小部件,如果一侧为“左侧”或“右侧”,则分配的空间将仅足够宽以容纳小部件


anchor
选项指定小部件在分配给它的空间内的位置。因此,如果只指定
anchor=“s”
而不指定侧面或任何其他选项,小部件将显示在小部件中可用空间的顶部和“s”(南部)的
anchor
似乎没有效果,因为空间刚好足够高,可以容纳小部件

如果希望小部件位于底部,可以使用
side=“bottom”

如果希望小部件位于左下角,则需要使用
anchor='w'
(西)或
anchor='sw'
(西南)并将
侧设置为“底部”


它现在锚定到默认位置,但不是我想要的位置,而且我想做Lebal.pack\u忘记()后缀来摆脱它,所以我需要使用.pack()@Bond007你可以在代码的后面调用
pack()
,它不会是一个problem@Bond007
grid
place
都可以“忘记”。事实上,如果要隐藏和显示小部件,
grid
是更好的选择,因为它可以记住小部件最初放置的位置。我意识到了这一点,并尝试了这两种方法,并且两种方法都只指向北方。标签的
anchor
选项定义标签中文本的显示位置,而不是位置标签显示在窗口中。是,但Where由用户定义,因此示例为smade wheres“s”因为它不起作用,但是你的例子锚定到N,而不是像tkinter那样声明的S
S
是tkinter变量,而不是像
where
那样的字符串。我认为像小的“S”应该起作用,但不确定的是仍然锚定到N可能是Lebal太大了,因为它有6行长?所以它恢复锚定?当它锚定到哪里时对于N,SE锚定到NE,SW锚定到NW您是否知道默认情况下,
pack
会将东西放在空白区域的顶部?另外,请创建一个适当的?我知道pack会将东西放在顶部,但我也尝试了网格,结果相同,下次我会记住最小的可复制示例,因为我不知道.下次不要这样做。你可以在你的问题中加入一个更好的例子。这样可以吗。