有没有办法在其他两个标签之间添加标签?
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)
在另一个项目中,我有一堆标签,只要给出字符串列表就会更新。但是如果我想向这个列表中添加一个字符串并用标签显示它,我将不得不再次销毁并重新制作所有这些字符串。为了简化它,下面的代码是我的起点。
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)