<p>答案很简单:
在build_widgets方法中,使用</p>
<pre><code> master = Tk()
</code></pre>
<p>应用程序中不应该有两个Tk()调用。
解决方法是删除这一行,并将每一次出现的master更改为self。自表示应用程序类,它继承自tk.框架类,因此是您的主要框架。在</p>
<p>你对run_Scip的构造也很奇怪。你为什么不这样做呢?在</p>
^{pr2}$
<p>这是完整的代码</p>
<pre><code>from Tkinter import *
import sys
sys.path.append("C:\Users\Magali\Desktop\Tennis\tennisMatchProbability.py")
import tennisMatchProbability
class App(Frame):
def run_script(self):
inputs = self.read_tk_field()
result = tennisMatchProbability.matchProb(inputs)
self.show_prob_result(result)
def show_prob_result(self,result):
self.result_label.config(text=result)
def build_widgets(self):
Label(self, text="First Name").grid(row=0)
Label(self, text="Last Name").grid(row=1)
Label(self, text="Game Score").grid(row=2)
Label(self, text="Set Score").grid(row=3)
e1 = Entry(self)
e2 = Entry(self)
e3 = Entry(self)
e4 = Entry(self)
self.result_label = Label(self)
e1.insert(10,"Novak")
e2.insert(10,"Djokovic")
e3.insert(10,"30-15")
e4.insert(10,"3-1")
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)
e4.grid(row=3, column=1)
self.result_label.grid(row=4, column=1)
Button(self, text='Run', command=self.run_script).grid(row=5, column=1, sticky=W, pady=4)
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.build_widgets()
root = Tk()
app = App(master = root)
app.mainloop()
</code></pre>