擅长:python、mysql、java
<p>您可以配置按钮,而不是多次销毁和创建按钮,请查看下面的示例</p>
<pre class="lang-py prettyprint-override"><code>from tkinter import *
def foo():
print('called foo')
button.configure(text='bar',command=bar)
def bar():
print('called bar')
button.configure(text='foo',command=foo)
root=Tk()
button=Button(root,text='foo',command=foo)
button.pack()
root.mainloop()
</code></pre>
<p><code>config</code>/<code>configure</code>是一种通用的小部件方法,您可以使用<a href="https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/universal.html" rel="nofollow noreferrer">this</a>referenece了解更多有关它们的信息</p>
<p>您当前面临此问题的原因是,每次使用下拉列表时,都会在上一个按钮(如果已经存在)的上方放置一个新按钮“更新”。<code>UpdateJsonBtn</code>保存最后分配的实例,因此删除最上面的实例,如果底层有按钮,它们将不会被销毁。我不会建议您目前使用的方法</p>
<p>在您提出的问题中,如果有一种方法可以获取所有显示“更新”的按钮,您可以使用以下方法进行操作(同样,我不建议在您的案例中使用此方法,只是为了回答您的问题)</p>
<pre class="lang-py prettyprint-override"><code>for widget in jsonframe.winfo_children():
if isinstance(widget,Button):
if widget['text']=='Update':
widget.destroy()
</code></pre>