<p>代码中有几个问题:</p>
<p>您在<code>command</code>参数中引用了错误的方法名,应该是:</p>
<p><code>searchbtn = Button(self,text = 'Search Videos',command=self.search)</code></p>
<p>另外,您还有一些属性问题:</p>
<p>不能在此方法之外访问在<code>create_widget</code>方法中定义的<code>topictxt</code>,除非将其作为实例属性,方法如下:</p>
<p><code>self.topiclbl = Label(self,text = 'Enter topic for search',font=(12))</code>。。。其余的也一样。为了解决这个问题:</p>
<pre><code>class Application(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
self.create_widgets()
def create_widgets(self):
self.topiclbl = Label(self,text = 'Enter topic for search',font=(12))
self.topiclbl.grid()
self.topictxt = Text(self,height=1, width=30,font=(12))
self.topictxt.grid()
self.searchbtn = Button(self,text = 'Search Videos',command=self.search)
self.searchbtn.grid()
def search(self):
message = 'Searching...'
self.topictxt.insert(0.0,message)
self.searchlbl = Label(self,text = message,font=(12))
self.searchlbl.grid()
</code></pre>
<p>另一种方法是使用<code>lambda</code>传递所需的对象(标签):</p>
<pre><code>class Application(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
self.create_widgets()
def create_widgets(self):
topiclbl = Label(self,text = 'Enter topic for search',font=(12))
topiclbl.grid()
topictxt = Text(self,height=1, width=30,font=(12))
topictxt.grid()
searchbtn = Button(self,text = 'Search Videos',command=lambda: self.search(topictxt))
searchbtn.grid()
def search(self, wdgt):
message = 'Searching...'
wdgt.insert(0.0,message)
searchlbl = Label(self,text = message,font=(12))
searchlbl.grid()
</code></pre>