有没有办法在其他两个标签之间添加标签?

Is there a way to add a label in between two other labels?

在另一个项目中,我有一堆标签,只要给出字符串列表就会更新。但是如果我想向这个列表中添加一个字符串并用标签显示它,我将不得不再次销毁并重新制作所有这些字符串。为了简化它,下面的代码是我的起点。

from tkinter import *
  
root = Tk()
a = Label(root, text ="Hello World")
a.pack()

b = Label(root, text = "Goodbye World")
b.pack()

# third label to add between label A and B
  
root.mainloop()

是否有某种插入功能或其他方法可以解决这个问题?

编辑:布莱恩·奥克利的回答:

应该使用标签包中的before/after参数

# third label to add between label A and B
c = Label(root, text="Live long and prosper")
c.pack(before=b)

我不完全确定这就是你提出问题的意思,但如果你想在 Label1 和 Label2 (a, b) 之间插入第三个标签,只需手动插入即可。

from tkinter import *

root = Tk()
a = Label(root, text="Hello World")
a.pack()

# third label to add between label A and B
c = Label(root, text="Middle Label")
c.pack()

b = Label(root, text="Goodbye World")
b.pack()

root.mainloop()

这样它就会在屏幕上显示在 a 和 b 之间。 如果你想在一个已经存在的标签中插入新文本,你可以使用 .configure() 方法随时更改特定标签的文本,如下所示:

from tkinter import *

lst = ["Oof"]

root = Tk()
a = Label(root, text="Hello World")
a.pack()

# third label to add between label A and B
c = Label(root, text="Middle Label")
c.pack()

b = Label(root, text="Goodbye World")
b.pack()

# Here I will add a simple code that asks the user to enter a number 
# between one and ten, if it's between those numbers then change the
# text to "Nice Choice!" else to first element of the list called lst
guess = int(input("Enter a number (1 - 10): "))

if 1 <= guess <= 10:
    c.configure(text="Nice choice!")
else:
    c.configure(text=f"{lst[0]}")  # Using f string

root.mainloop()

您调用 pack 的顺序很重要,因为它确定了小部件相对于彼此出现的顺序。 pack 还提供了更改该顺序的参数。您可以指定 before 在另一个小部件之前添加一个小部件,并指定 after 将小部件放在后面。

此代码将第三个标签放在小部件之前 b:

# third label to add between label A and B
c = Label(root, text="Live long and prosper")
c.pack(before=b)

此代码将第三个标签放在小部件之后 a:

# third label to add between label A and B
c = Label(root, text="Live long and prosper")
c.pack(after=a)