【问题标题】:How to clear all canvas items except entry items?如何清除除条目项之外的所有画布项?
【发布时间】:2019-04-23 08:43:04
【问题描述】:

我想删除 tkinter 中画布的所有元素,但条目元素除外。有没有办法做到这一点?

【问题讨论】:

  • 在创建时将其他元素存储在一个列表中,然后循环遍历它以供以后删除。
  • 什么是画布“入口”元素?有一个名为 Entry 的 tkinter 小部件,但 Canvas 小部件不提供直接创建它们的方法。即没有create_entry() 方法。

标签: python python-3.x tkinter tkinter-canvas


【解决方案1】:

一种方法是将每个小部件的引用存储在可以独立操作的集合中。在这里,我们分别存储LabelButtonEntry。按下remove all but entry 按钮后,所有小部件都将被销毁,Entries 除外。

import tkinter as tk


def remove_all_but_entries():
    for button in buttons:
        button.destroy()
    for label in labels:
        label.destroy()


root = tk.Tk()

labels = []
labels.append(tk.Label(root, text='make disappear example'))
for label in labels:
    label.pack()

buttons = []
buttons.append(tk.Button(root, text='start', command=lambda: print('button start')))
buttons.append(tk.Button(root, text='stop', command=lambda: print('button stop')))
buttons.append(tk.Button(root, text='remove all but entry', command=remove_all_but_entries))
for button in buttons:
    button.pack()

entries = []
entries.append(tk.Entry(root))
for entry in entries:
    entry.pack()

root.mainloop() 

【讨论】:

  • 请注意,OP 想要清除所有 Canvas “入口元素”,而不是 tkinter Entry 小部件——尽管我不确定前者是什么.. .
  • 是的,我注意到@martineau,谢谢...由于问题中缺乏细节,我认为这是语言不准确,但 OP 可能会给我们反馈。
  • 不客气,很高兴能帮到你,如果你觉得我的回答对你有帮助,你可以考虑what to do when someone answers my questionhow to accept my answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多