【问题标题】:How to delete some Tkinter lables from the list and display only remaining one如何从列表中删除一些 Tkinter 标签并仅显示剩余的一个
【发布时间】:2020-05-02 03:58:12
【问题描述】:

/ 大家好!

目前我正在尝试学习 Python 和 Tkinter 模块。

我的问题:

我有一个标签名称列表。对于我在 for 循环中创建的每个标签,我从该列表中分配名称,将它们放入新的 l​​abelList 并在窗口中显示它们。 之后,我需要能够根据自己的选择从窗口中删除其中一个标签(例如:名称为“test2”和“test3”的标签 - 我想删除,但“test1”仍应显示)。我该怎么做?

from tkinter import *

root = Tk()

root.geometry("640x480")
root.resizable(0, 0)

labelNames = ["test", "test2", "test3"]  # list of Label Names
labelList = []  # List of Labels

for labelName in labelNames:
    myLabel = Label(root, text=labelName)
    labelList.append(myLabel)
    myLabel.pack()


for label in enumerate(labelList):
     label[1].destroy()  #I need to be able to remove label from window (by my chose), but instead it removing all of them.

root.mainloop()

`

【问题讨论】:

  • 使用字典而不是列表来保存标签。然后就可以使用名称来查找标签了。
  • 嗨!谢谢!如果可能的话,请您演示一些示例。如何使用不同的文本动态生成标签,将它们安全保存到字典中并通过键值显示它们。

标签: python user-interface tkinter label


【解决方案1】:

使用dictionary 以标签名称作为键保存标签,然后您可以通过标签名称查找标签。下面是一个示例程序:

import tkinter as tk

root = tk.Tk()
root.geometry('640x480')
root.resizable(0, 0)

lbl_frm = tk.Frame(root)
lbl_frm.pack()

# create the labels and save them to a dictionary
label_list = {}
for i in range(100):
    name = f'test{i+1}'
    lbl = tk.Label(lbl_frm, text=name, width=8)
    lbl.grid(row=i//10, column=i%10)
    label_list[name] = lbl

frm = tk.Frame(root)
frm.pack()

entry = tk.Entry(frm, width=10)
entry.pack(side=tk.LEFT, pady=5, padx=5)

def delete_label():
    name = entry.get().strip()
    if name:
        if name in label_list:
            print(f'label {name} deleted')
            label_list[name].destroy()  # use .grid_forget() if you want to recover the label
            label_list.pop(name) # don't remove label from dict if you want to recover it
        else:
            print(f'label {name} not found')

tk.Button(frm, text='Delete Label', command=delete_label).pack(side=tk.LEFT)

root.mainloop()

【讨论】:

  • 这太棒了!太感谢了 !!!!正是我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2020-12-05
相关资源
最近更新 更多