<p>首先,place()返回None,因此SClabelspare==None不是Tkinter ID;其次,它是本地的,因此当函数退出时,垃圾回收也是如此。你必须保留对对象的引用,这可以通过多种方式实现。Python教程是一个很好的主意,在您进一步研究之前先了解基础知识<a href="https://wiki.python.org/moin/BeginnersGuide/Programmers" rel="nofollow">https://wiki.python.org/moin/BeginnersGuide/Programmers</a>另外,不使用类结构来编程Tkinter应用程序是一种令人沮丧的体验,除非它是非常简单的事情。否则,你会遇到像你这样的错误,你必须花很多时间和精力去克服它们。这是我已经有过的一个例子,目的是给出这个过程的一般概念。在</p>
<pre><code>from Tkinter import *
from functools import partial
class ButtonsTest:
def __init__(self):
self.top = Tk()
self.top.title("Click a button to remove")
Label(self.top, text="Click a button to remove it",
bg="lightyellow").grid(row=0)
self.top_frame = Frame(self.top, width =400, height=400)
self.button_dic = {}
self.buttons()
self.top_frame.grid(row=1, column=0)
Button(self.top_frame, text='Exit', bg="orange",
command=self.top.quit).grid(row=10,column=0, columnspan=5)
self.top.mainloop()
## -
def buttons(self):
b_row=1
b_col=0
for but_num in range(1, 11):
## create a button and send the button's number to
## self.cb_handler when the button is pressed
b = Button(self.top_frame, text = str(but_num),
command=partial(self.cb_handler, but_num))
b.grid(row=b_row, column=b_col)
## dictionary key=button number > button instance
self.button_dic[but_num] = b
b_col += 1
if b_col > 4:
b_col = 0
b_row += 1
##
def cb_handler( self, cb_number ):
print "\ncb_handler", cb_number
self.button_dic[cb_number].grid_forget()
##===================================================================
BT=ButtonsTest()
</code></pre>